Annotation of 43BSDTahoe/new/xns/courierlib/Authentication3.cr, revision 1.1.1.1

1.1       root        1: -- $Header: Authentication3.cr,v 1.1 86/12/10 13:34:24 ed Exp $ --
                      2: 
                      3: -- $Log:       Authentication3.cr,v $
                      4: -- Revision 1.1  86/12/10  13:34:24  ed
                      5: -- Initial revision
                      6: --
                      7: --
                      8: 
                      9: Authentication: PROGRAM 14 VERSION 3 =
                     10: 
                     11: BEGIN
                     12:     DEPENDS UPON Time(15) VERSION 2;
                     13: 
                     14: -- faked dependency: should be DEPENDS UPON Clearinghouse(2) VERSION 3; --
                     15: 
                     16: Organization: TYPE = STRING;
                     17: Domain: TYPE = STRING;
                     18: Object: TYPE = STRING;
                     19: 
                     20: ThreePartName: TYPE = RECORD [
                     21:     organization: Organization,
                     22:     domain: Domain,
                     23:     object: Object
                     24:     ];
                     25: 
                     26: Clearinghouse_Name:  TYPE = ThreePartName;
                     27: 
                     28: 
                     29: -- TYPES --
                     30: 
                     31: -- Types supporting encoding --
                     32: 
                     33: Key: TYPE = ARRAY 4 OF UNSPECIFIED;  -- lsb of each octet is odd parity bit --
                     34: 
                     35: Block: TYPE = ARRAY 4 OF UNSPECIFIED;  -- cipher text or plain text block --
                     36: 
                     37: HashedPassword: TYPE = CARDINAL;
                     38: 
                     39: -- Types describing credentials and verifiers --
                     40: 
                     41: CredentialsType: TYPE = {simple(0), strong(1)};
                     42: 
                     43: simpleCredentials: CredentialsType = simple;
                     44: 
                     45: Credentials: TYPE = RECORD [type: CredentialsType,
                     46:                            value: SEQUENCE OF UNSPECIFIED];
                     47: 
                     48: -- nullCredentials doesn't work yet --
                     49: -- nullCredentials: Credentials = [type: simple, value: []]; --
                     50: 
                     51: CredentialsPackage: TYPE = RECORD [
                     52:        credentials: Credentials,
                     53:        nonce: LONG CARDINAL,
                     54:        recipient: Clearinghouse_Name,
                     55:        conversationKey: Key ];
                     56: 
                     57: -- instances of the following type must be a multiple of 64 bits, padded --
                     58: -- with zeros, before encryption --
                     59: 
                     60: StrongCredentials: TYPE = RECORD [
                     61:        conversationKey: Key,
                     62:        expirationTime: Time.Time,
                     63:        initiator: Clearinghouse_Name ];
                     64: 
                     65: SimpleCredentials: TYPE = Clearinghouse_Name;
                     66: 
                     67: Verifier: TYPE = SEQUENCE 12 OF UNSPECIFIED;
                     68: 
                     69: StrongVerifier: TYPE = RECORD [
                     70:        timeStamp: Time.Time,
                     71:        ticks: LONG CARDINAL ];
                     72: 
                     73: SimpleVerifier: TYPE = HashedPassword;
                     74: 
                     75: Proxy: TYPE = SEQUENCE OF UNSPECIFIED;
                     76: 
                     77: -- instances of the following type must be a multiple of 64 bits, padded --
                     78: -- with zeros, before encryption --
                     79: 
                     80: StrongProxy: TYPE = RECORD [
                     81:        randomBits: Block,
                     82:        expirationTime: Time.Time,
                     83:        agent: Clearinghouse_Name];
                     84: 
                     85: SimpleProxy: TYPE = BOOLEAN;
                     86: 
                     87: -- ERRORS --
                     88: 
                     89: Problem: TYPE = {
                     90:     credentialsInvalid(0),             -- credentials unacceptable --
                     91:     verifierInvalid(1),                        -- verifier unacceptable --
                     92:     verifierExpired(2),                        -- the verifier was too old --
                     93:     verifierReused(3),                 -- the verifier has been used before --
                     94:     credentialsExpired(4),             -- the credentials have expired --
                     95:     inappropriateCredentials(5),       -- passed strong, wanted simple, or vica versa --
                     96:     proxyInvalid(6),                   -- proxy has invalid format --
                     97:     proxyExpired(7),                   -- the proxy was too old --
                     98:     otherProblem(8) };
                     99: AuthenticationError: ERROR[problem: Problem] = 2;
                    100: 
                    101: CallProblem: TYPE = {
                    102:     tooBusy(0),                                -- server is too busy to service this request --
                    103:     accessRightsInsufficient(1),       -- operation prevented by access controls --
                    104:     keysUnavailable(2),                        -- the server which holds the required key was inaccessible --
                    105:     strongKeyDoesNotExist(3),          -- a strong key critical to this operation has not been registered --
                    106:     simpleKeyDoesNotExist(4),          -- a simple key critical to this operation has not been registered --
                    107:     strongKeyAlreadyRegistered(5),     -- cannot create a strong key for an entity which already has one --
                    108:     simpleKeyAlreadyRegistered(6),     -- cannot create a simple key for an entity which already has one --
                    109:     domainForNewKeyUnavailable(7),     -- cannot create a new key because the domain to hold it is unaccessible --
                    110:     domainForNewKeyUnknown(8),         -- cannot create a new key because the domain to hold it is unknown --
                    111:     badKey(9),                         -- bad key passed to CreateStrongKey or ChangeStrongKey --
                    112:     badName(10),                       -- bad name passed to CreateStrongKey or ChangeStrongKey --
                    113:     databaseFull(11),                  -- no more data can be added to the Authentication database --
                    114:     otherCallProblem(12) };
                    115: Which: TYPE = {notApplicable(0), initiator(1), recipient(2), agent(3) };
                    116: CallError: ERROR [problem: CallProblem, whichArg: Which] = 1;
                    117: 
                    118: 
                    119: -- PROCEDURES --
                    120: 
                    121: -- Strong Authentication --
                    122: 
                    123: GetStrongCredentials: PROCEDURE [
                    124:                initiator, recipient: Clearinghouse_Name,
                    125:                nonce: LONG CARDINAL ]
                    126:        RETURNS [ credentialsPackage: SEQUENCE OF UNSPECIFIED ]
                    127:                -- encrypted with the initiator's strong key --
                    128:        REPORTS [ CallError ] = 1;
                    129: 
                    130: TradeProxyForCredentials: PROCEDURE [
                    131:                credentials: Credentials, verifier: Verifier,
                    132:                initiator: Clearinghouse_Name, proxy: Proxy,
                    133:                recipient: Clearinghouse_Name, nonce: LONG CARDINAL ]
                    134:        RETURNS [ credentialsPackage: SEQUENCE OF UNSPECIFIED,
                    135:                -- enxrypted with the agent's strong key --
                    136:                  proxyForRecipient: Proxy ]
                    137:        REPORTS [ AuthenticationError, CallError ] = 9;
                    138: 
                    139: CreateStrongKey: PROCEDURE [
                    140:                credentials: Credentials, verifier: Verifier,
                    141:                name: Clearinghouse_Name, encryptedKey: Block ]
                    142:        REPORTS [ AuthenticationError, CallError ] = 3;
                    143: 
                    144: ChangeStrongKey: PROCEDURE [
                    145:                credentials: Credentials, verifier: Verifier,
                    146:                encryptedNewKey: Block ]
                    147:        REPORTS [ AuthenticationError, CallError ] = 4;
                    148: 
                    149: DeleteStrongKey: PROCEDURE [
                    150:                credentials: Credentials, verifier: Verifier,
                    151:                name: Clearinghouse_Name ]
                    152:        REPORTS [ AuthenticationError, CallError ] = 5;
                    153: 
                    154: 
                    155: -- Simple Authentication -- 
                    156: 
                    157: CheckSimpleCredentials: PROCEDURE [
                    158:                credentials: Credentials, verifier: Verifier ]
                    159:        RETURNS [ ok: BOOLEAN, initiator: Clearinghouse_Name ]
                    160:        REPORTS [ AuthenticationError, CallError ] = 2;
                    161: 
                    162: CreateSimpleKey: PROCEDURE [
                    163:                credentials: Credentials, verifier: Verifier,
                    164:                name: Clearinghouse_Name, key: HashedPassword ]
                    165:        REPORTS [ AuthenticationError, CallError ] = 6;
                    166: 
                    167: ChangeSimpleKey: PROCEDURE [
                    168:                credentials: Credentials, verifier: Verifier,
                    169:                newKey: HashedPassword ]
                    170:        REPORTS [ AuthenticationError, CallError ] = 7;
                    171: 
                    172: DeleteSimpleKey: PROCEDURE [
                    173:                credentials: Credentials, verifier: Verifier,
                    174:                name: Clearinghouse_Name ]
                    175:        REPORTS [ AuthenticationError, CallError ] = 8;
                    176: 
                    177: 
                    178: END.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.