mirror of
https://github.com/PDP-10/stacken.git
synced 2026-02-15 12:16:07 +00:00
173 lines
3.2 KiB
Plaintext
173 lines
3.2 KiB
Plaintext
TITLE ENDECR - ALC STYLE ENCRIPTION SCHEME
|
||
|
||
|
||
SEARCH UUOSYM
|
||
|
||
.BCOPY
|
||
COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1986. ALL RIGHTS RESERVED.
|
||
.ECOPY
|
||
\;END COPYRIGHT MACRO
|
||
|
||
|
||
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1986. ALL RIGHTS RESERVED.
|
||
;
|
||
;
|
||
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
|
||
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
|
||
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
|
||
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
|
||
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
|
||
;TRANSFERRED.
|
||
;
|
||
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
|
||
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
|
||
;CORPORATION.
|
||
;
|
||
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
|
||
TWOSEG
|
||
|
||
COMMENT $
|
||
|
||
THE FOLLOWING CODE CONSISTS OF 3 BASIC ROUTINES:
|
||
1) CRASZ. - WARMUP ROUTINE FOR ASCIZ SEED
|
||
2) CRSIX. - WARMUP ROUTINE FOR A SIXBIT ATOM
|
||
3) CRYPT. - BASIC CRYPTION
|
||
|
||
CALLING CONVENTIONS:
|
||
THESE 3 SUBROUTINES USE AC'S 0-7, ARGUMENTS ARE PASSED
|
||
IN 5 , 6 , AND 7 - ANSWERS RETURNED IN 5.
|
||
|
||
1) MOVE A,<ADDR OF ASCIZ STRING OR BP>
|
||
PUSHJ P,CRASZ.
|
||
...... ;SEED RETURNED IN (C)
|
||
|
||
2) MOVE C,<SIXBIT ATOM>
|
||
PUSHJ P,CRSIX.
|
||
...... ;SEED RETURNED IN (C)
|
||
|
||
3) MOVE A,<AOBJN WORD TO BLOCK TO BE CRYPTED>
|
||
MOVE B,<BLOCK KEY (BLOCK NUMBER WILL DO)>
|
||
MOVE C,<SEED GENERATED BY CRASZ. OR CRSIX.>
|
||
PUSHJ P,CRYPT.
|
||
...... ;ALWAYS RETURN
|
||
$
|
||
ENTRY CRASZ.,CRSIX.,CRYPT.
|
||
|
||
;AC DEF'S
|
||
|
||
Z==0
|
||
T1==1
|
||
T2==2
|
||
T3==3
|
||
T4==4
|
||
C==5
|
||
B==6
|
||
A==7
|
||
P==17
|
||
;CRASZ. - CONVERTS ASCIZ STRINGS POINTED TO BY (A) INTO SEEDS
|
||
|
||
RELOC 400000
|
||
|
||
CRASZ.: TLNN A,-1 ;SEE IF BYTE-PNTR
|
||
HRLI A,(<POINT 7,,>)
|
||
MOVEI B,0
|
||
PUSH P,B
|
||
CRASZ1: MOVEI C,0
|
||
MOVE T1,[POINT 6,C]
|
||
CRASZ2: ILDB Z,A
|
||
JUMPE Z,CRASZ3
|
||
CAIG Z,"Z"+40
|
||
CAIG Z," "
|
||
JRST CRASZ2
|
||
CAILE Z,"_"
|
||
SUBI Z,40
|
||
SUBI Z,40
|
||
IDPB Z,T1
|
||
TLNE T1,770000
|
||
JRST CRASZ2
|
||
XOR C,0(P)
|
||
PUSHJ P,CRSIX.
|
||
MOVEM C,0(P)
|
||
JRST CRASZ1
|
||
|
||
CRASZ3: JUMPE C,CRASZ4
|
||
XOR C,0(P)
|
||
PUSHJ P,CRSIX.
|
||
MOVEM C,0(P)
|
||
CRASZ4: POP P,C
|
||
JUMPN C,CRASZ5
|
||
SKIPE B
|
||
MOVE C,[13702,,175435]
|
||
CRASZ5: POPJ P,
|
||
|
||
;CRSIZ. - HANDLES SIXBIT ATOMS (CALLED FROM CRASZ.)
|
||
|
||
CRSIX.: JUMPE C,CRSIX1
|
||
PUSHJ P,CWRAN
|
||
HLR B,B
|
||
SUB P,B
|
||
CRSIX1: POPJ P,
|
||
;CRYPT. - BASIC BLOCK EN/DE CRYPTER
|
||
|
||
CRYPT.: JUMPE C,CRYPT4
|
||
MOVE Z,B
|
||
IMULI Z,200401
|
||
AND Z,[11111111]
|
||
MUL Z,[11111111]
|
||
TLZ T1,(<6B2>)
|
||
ADD C,T1
|
||
PUSHJ P,CWRAN
|
||
HLRZ T1,B
|
||
MOVN T1,T1
|
||
HRL T1,T1
|
||
ADDI T1,1(P)
|
||
PUSH P,T1
|
||
CRYPTA: MOVE T1,0(P)
|
||
HRRZ T2,B
|
||
HRL T2,T2
|
||
ADD T2,T1
|
||
CRYPT1: MOVE Z,0(T2)
|
||
ADDB Z,0(T1)
|
||
XORM Z,0(A)
|
||
AOBJP A,CRYPT3
|
||
AOBJN T2,CRYPT2
|
||
HRRZ T2,0(P)
|
||
TLO T2,(<1B0>)
|
||
CRYPT2: AOBJN T1,CRYPT1
|
||
JRST CRYPTA
|
||
|
||
CRYPT3: HLR B,B
|
||
AOBJN B,.+1
|
||
SUB P,B
|
||
CRYPT4: POPJ P,
|
||
|
||
CWRAN: LDB T4,[POINT 3,C,4]
|
||
POP P,T2
|
||
CWRAN0: XOR C,[13702,,175435]
|
||
TLZ C,760000
|
||
JUMPE C,CWRAN0
|
||
HLRZ T3,MAJIK(T4)
|
||
CWRAN1: MOVEI Z,6
|
||
CWRAN2: MOVE B,C
|
||
ROT B,13
|
||
XOR B,C
|
||
ROT B,-6
|
||
LSHC C,6
|
||
SOJG Z,CWRAN2
|
||
PUSH P,C
|
||
SOJG T3,CWRAN1
|
||
MOVE B,MAJIK(T4)
|
||
JRST 0(T2)
|
||
|
||
MAJIK: 7,,4
|
||
11,,5
|
||
12,,7
|
||
13,,11
|
||
17,,10
|
||
17,,13
|
||
21,,5
|
||
22,,13
|
||
|
||
END
|