⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des_enc.m4

📁 OpenSSL 0.9.8k 最新版OpenSSL
💻 M4
📖 第 1 页 / 共 4 页
字号:
	LDPTR	IVEC, local4	store_little_endian(local4, in5, out5, local5, .SLE2)  ! ivec	ret	restore.ncbc.dec:	STPTR	in0, INPUT	cmp	in2, 0                    ! length	add	in3, 120, in3	LDPTR	IVEC, local7              ! ivec#ifdef OPENSSL_SYSNAME_ULTRASPARC	ble,pn	%icc, .ncbc.dec.finish#else	ble	.ncbc.dec.finish#endif	mov	in3, in4                  ! schedule	STPTR	in1, OUTPUT	mov	in0, local5               ! input	load_little_endian(local7, in0, in1, local3, .LLE3)   ! ivec.ncbc.dec.next.block:	load_little_endian(local5, in5, out5, local3, .LLE4)  ! block	! parameter 6  1/2 for include encryption/decryption	! parameter 7  1 for mov in1 to in3	! parameter 8  1 for mov in3 to in4	ip_macro(in5, out5, out5, in5, in4, 2, 0, 1) ! include decryprion  ks in4	fp_macro(out5, in5, 0, 1) ! 1 for input and output address to local5/7	! in2 is bytes left to be stored	! in2 is compared to 8 in the rounds	xor	out5, in0, out4           ! iv xor#ifdef OPENSSL_SYSNAME_ULTRASPARC	bl,pn	%icc, .ncbc.dec.seven.or.less#else	bl	.ncbc.dec.seven.or.less#endif	xor	in5, in1, global4         ! iv xor	! Load ivec next block now, since input and output address might be the same.	load_little_endian_inc(local5, in0, in1, local3, .LLE5)  ! iv	store_little_endian(local7, out4, global4, local3, .SLE3)	STPTR	local5, INPUT	add	local7, 8, local7	addcc   in2, -8, in2#ifdef OPENSSL_SYSNAME_ULTRASPARC	bg,pt	%icc, .ncbc.dec.next.block#else	bg	.ncbc.dec.next.block#endif	STPTR	local7, OUTPUT.ncbc.dec.store.iv:	LDPTR	IVEC, local4              ! ivec	store_little_endian(local4, in0, in1, local5, .SLE4).ncbc.dec.finish:	ret	restore.ncbc.dec.seven.or.less:	load_little_endian_inc(local5, in0, in1, local3, .LLE13)     ! ivec	store_n_bytes(local7, in2, global4, out4, local3, local4, .SNB1, .ncbc.dec.store.iv).DES_ncbc_encrypt.end:	.size	 DES_ncbc_encrypt, .DES_ncbc_encrypt.end-DES_ncbc_encrypt! void DES_ede3_cbc_encrypt(input, output, lenght, ks1, ks2, ks3, ivec, enc)! **************************************************************************	.align 32	.global DES_ede3_cbc_encrypt	.type	 DES_ede3_cbc_encrypt,#functionDES_ede3_cbc_encrypt:	save	%sp, FRAME, %sp	define({KS1}, { [%sp+BIAS+ARG0+3*ARGSZ] })	define({KS2}, { [%sp+BIAS+ARG0+4*ARGSZ] })	define({KS3}, { [%sp+BIAS+ARG0+5*ARGSZ] })	sethi	%hi(.PIC.DES_SPtrans-1f),global1	or	global1,%lo(.PIC.DES_SPtrans-1f),global11:	call	.+8	add	%o7,global1,global1	sub	global1,.PIC.DES_SPtrans-.des_and,out2	LDPTR	[%fp+BIAS+ARG0+7*ARGSZ], local3          ! enc	LDPTR	[%fp+BIAS+ARG0+6*ARGSZ], local4          ! ivec	cmp	local3, 0                 ! enc#ifdef OPENSSL_SYSNAME_ULTRASPARC	be,pn	%icc, .ede3.dec#else	be	.ede3.dec#endif	STPTR	in4, KS2	STPTR	in5, KS3	load_little_endian(local4, in5, out5, local3, .LLE6)  ! ivec	addcc	in2, -8, in2              ! bytes missing after next block#ifdef OPENSSL_SYSNAME_ULTRASPARC	bl,pn	%icc,  .ede3.enc.seven.or.less#else	bl	.ede3.enc.seven.or.less#endif	STPTR	in3, KS1.ede3.enc.next.block:	load_little_endian(in0, out4, global4, local3, .LLE7).ede3.enc.next.block_1:	LDPTR	KS2, in4	xor	in5, out4, in5            ! iv xor	xor	out5, global4, out5       ! iv xor	LDPTR	KS1, in3	add	in4, 120, in4             ! for decryption we use last subkey first	nop	ip_macro(in5, out5, in5, out5, in3).ede3.enc.next.block_2:	call .des_enc                     ! ks1 in3	nop	call .des_dec                     ! ks2 in4	LDPTR	KS3, in3	call .des_enc                     ! ks3 in3  compares in2 to 8	nop#ifdef OPENSSL_SYSNAME_ULTRASPARC	bl,pn	%icc, .ede3.enc.next.block_fp#else	bl	.ede3.enc.next.block_fp#endif	add	in0, 8, in0	! If 8 or more bytes are to be encrypted after this block,	! we combine final permutation for this block with initial	! permutation for next block. Load next block:	load_little_endian(in0, global3, global4, local5, .LLE11)	!  parameter 1   original left	!  parameter 2   original right	!  parameter 3   left ip	!  parameter 4   right ip	!  parameter 5   1: load ks1/ks2 to in3/in4, add 120 to in4	!                2: mov in4 to in3	!	! also adds -8 to length in2 and loads loop counter to out4	fp_ip_macro(out0, out1, global3, global4, 1)	store_little_endian(in1, out0, out1, local3, .SLE9)  ! block	mov 	in5, local1	xor	global3, out5, in5        ! iv xor next block	ld	[in3], out0               ! key 7531	add	global1, 512, global3     ! address sbox 3	xor	global4, local1, out5     ! iv xor next block	ld	[in3+4], out1             ! key 8642	add	global1, 768, global4     ! address sbox 4	ba	.ede3.enc.next.block_2	add	in1, 8, in1.ede3.enc.next.block_fp:	fp_macro(in5, out5)	store_little_endian(in1, in5, out5, local3, .SLE5)  ! block	addcc   in2, -8, in2              ! bytes missing when next block done#ifdef OPENSSL_SYSNAME_ULTRASPARC	bpos,pt	%icc, .ede3.enc.next.block#else	bpos	.ede3.enc.next.block#endif	add	in1, 8, in1.ede3.enc.seven.or.less:	cmp	in2, -8#ifdef OPENSSL_SYSNAME_ULTRASPARC	ble,pt	%icc, .ede3.enc.finish#else	ble	.ede3.enc.finish#endif	nop	add	in2, 8, local1            ! bytes to load	! addr, length, dest left, dest right, temp, temp2, label, ret label	load_n_bytes(in0, local1, global4, out4, local2, local3, .LNB2, .ede3.enc.next.block_1).ede3.enc.finish:	LDPTR	[%fp+BIAS+ARG0+6*ARGSZ], local4          ! ivec	store_little_endian(local4, in5, out5, local5, .SLE6)  ! ivec	ret	restore.ede3.dec:	STPTR	in0, INPUT	add	in5, 120, in5	STPTR	in1, OUTPUT	mov	in0, local5	add	in3, 120, in3	STPTR	in3, KS1	cmp	in2, 0#ifdef OPENSSL_SYSNAME_ULTRASPARC	ble	%icc, .ede3.dec.finish#else	ble	.ede3.dec.finish#endif	STPTR	in5, KS3	LDPTR	[%fp+BIAS+ARG0+6*ARGSZ], local7          ! iv	load_little_endian(local7, in0, in1, local3, .LLE8).ede3.dec.next.block:	load_little_endian(local5, in5, out5, local3, .LLE9)	! parameter 6  1/2 for include encryption/decryption	! parameter 7  1 for mov in1 to in3	! parameter 8  1 for mov in3 to in4	! parameter 9  1 for load ks3 and ks2 to in4 and in3	ip_macro(in5, out5, out5, in5, in4, 2, 0, 0, 1) ! inc .des_dec ks3 in4	call .des_enc                     ! ks2 in3	LDPTR	KS1, in4	call .des_dec                     ! ks1 in4	nop	fp_macro(out5, in5, 0, 1)   ! 1 for input and output address local5/7	! in2 is bytes left to be stored	! in2 is compared to 8 in the rounds	xor	out5, in0, out4#ifdef OPENSSL_SYSNAME_ULTRASPARC	bl,pn	%icc, .ede3.dec.seven.or.less#else	bl	.ede3.dec.seven.or.less#endif	xor	in5, in1, global4	load_little_endian_inc(local5, in0, in1, local3, .LLE10)   ! iv next block	store_little_endian(local7, out4, global4, local3, .SLE7)  ! block	STPTR	local5, INPUT	addcc   in2, -8, in2	add	local7, 8, local7#ifdef OPENSSL_SYSNAME_ULTRASPARC	bg,pt	%icc, .ede3.dec.next.block#else	bg	.ede3.dec.next.block#endif	STPTR	local7, OUTPUT.ede3.dec.store.iv:	LDPTR	[%fp+BIAS+ARG0+6*ARGSZ], local4          ! ivec	store_little_endian(local4, in0, in1, local5, .SLE8)  ! ivec.ede3.dec.finish:	ret	restore.ede3.dec.seven.or.less:	load_little_endian_inc(local5, in0, in1, local3, .LLE14)     ! iv	store_n_bytes(local7, in2, global4, out4, local3, local4, .SNB2, .ede3.dec.store.iv).DES_ede3_cbc_encrypt.end:	.size	 DES_ede3_cbc_encrypt,.DES_ede3_cbc_encrypt.end-DES_ede3_cbc_encrypt	.align	256	.type	 .des_and,#object	.size	 .des_and,284.des_and:! This table is used for AND 0xFC when it is known that register! bits 8-31 are zero. Makes it possible to do three arithmetic! operations in one cycle.	.byte  0, 0, 0, 0, 4, 4, 4, 4	.byte  8, 8, 8, 8, 12, 12, 12, 12	.byte  16, 16, 16, 16, 20, 20, 20, 20	.byte  24, 24, 24, 24, 28, 28, 28, 28	.byte  32, 32, 32, 32, 36, 36, 36, 36	.byte  40, 40, 40, 40, 44, 44, 44, 44	.byte  48, 48, 48, 48, 52, 52, 52, 52	.byte  56, 56, 56, 56, 60, 60, 60, 60	.byte  64, 64, 64, 64, 68, 68, 68, 68	.byte  72, 72, 72, 72, 76, 76, 76, 76	.byte  80, 80, 80, 80, 84, 84, 84, 84	.byte  88, 88, 88, 88, 92, 92, 92, 92	.byte  96, 96, 96, 96, 100, 100, 100, 100	.byte  104, 104, 104, 104, 108, 108, 108, 108	.byte  112, 112, 112, 112, 116, 116, 116, 116	.byte  120, 120, 120, 120, 124, 124, 124, 124	.byte  128, 128, 128, 128, 132, 132, 132, 132	.byte  136, 136, 136, 136, 140, 140, 140, 140	.byte  144, 144, 144, 144, 148, 148, 148, 148	.byte  152, 152, 152, 152, 156, 156, 156, 156	.byte  160, 160, 160, 160, 164, 164, 164, 164	.byte  168, 168, 168, 168, 172, 172, 172, 172	.byte  176, 176, 176, 176, 180, 180, 180, 180	.byte  184, 184, 184, 184, 188, 188, 188, 188	.byte  192, 192, 192, 192, 196, 196, 196, 196	.byte  200, 200, 200, 200, 204, 204, 204, 204	.byte  208, 208, 208, 208, 212, 212, 212, 212	.byte  216, 216, 216, 216, 220, 220, 220, 220	.byte  224, 224, 224, 224, 228, 228, 228, 228	.byte  232, 232, 232, 232, 236, 236, 236, 236	.byte  240, 240, 240, 240, 244, 244, 244, 244	.byte  248, 248, 248, 248, 252, 252, 252, 252	! 5 numbers for initil/final permutation	.word   0x0f0f0f0f                ! offset 256	.word	0x0000ffff                ! 260	.word	0x33333333                ! 264	.word	0x00ff00ff                ! 268	.word	0x55555555                ! 272	.word	0                         ! 276	.word	LOOPS                     ! 280	.word	0x0000FC00                ! 284	.type	.PIC.DES_SPtrans,#object	.size	.PIC.DES_SPtrans,2048.align	64.PIC.DES_SPtrans:	! nibble 0	.word	0x02080800, 0x00080000, 0x02000002, 0x02080802	.word	0x02000000, 0x00080802, 0x00080002, 0x02000002	.word	0x00080802, 0x02080800, 0x02080000, 0x00000802	.word	0x02000802, 0x02000000, 0x00000000, 0x00080002	.word	0x00080000, 0x00000002, 0x02000800, 0x00080800	.word	0x02080802, 0x02080000, 0x00000802, 0x02000800	.word	0x00000002, 0x00000800, 0x00080800, 0x02080002	.word	0x00000800, 0x02000802, 0x02080002, 0x00000000	.word	0x00000000, 0x02080802, 0x02000800, 0x00080002	.word	0x02080800, 0x00080000, 0x00000802, 0x02000800	.word	0x02080002, 0x00000800, 0x00080800, 0x02000002	.word	0x00080802, 0x00000002, 0x02000002, 0x02080000	.word	0x02080802, 0x00080800, 0x02080000, 0x02000802	.word	0x02000000, 0x00000802, 0x00080002, 0x00000000	.word	0x00080000, 0x02000000, 0x02000802, 0x02080800	.word	0x00000002, 0x02080002, 0x00000800, 0x00080802	! nibble 1	.word	0x40108010, 0x00000000, 0x00108000, 0x40100000	.word	0x40000010, 0x00008010, 0x40008000, 0x00108000	.word	0x00008000, 0x40100010, 0x00000010, 0x40008000	.word	0x00100010, 0x40108000, 0x40100000, 0x00000010	.word	0x00100000, 0x40008010, 0x40100010, 0x00008000	.word	0x00108010, 0x40000000, 0x00000000, 0x00100010	.word	0x40008010, 0x00108010, 0x40108000, 0x40000010	.word	0x40000000, 0x00100000, 0x00008010, 0x40108010	.word	0x00100010, 0x40108000, 0x40008000, 0x00108010	.word	0x40108010, 0x00100010, 0x40000010, 0x00000000	.word	0x40000000, 0x00008010, 0x00100000, 0x40100010	.word	0x00008000, 0x40000000, 0x00108010, 0x40008010	.word	0x40108000, 0x00008000, 0x00000000, 0x40000010	.word	0x00000010, 0x40108010, 0x00108000, 0x40100000	.word	0x40100010, 0x00100000, 0x00008010, 0x40008000	.word	0x40008010, 0x00000010, 0x40100000, 0x00108000	! nibble 2	.word	0x04000001, 0x04040100, 0x00000100, 0x04000101	.word	0x00040001, 0x04000000, 0x04000101, 0x00040100	.word	0x04000100, 0x00040000, 0x04040000, 0x00000001	.word	0x04040101, 0x00000101, 0x00000001, 0x04040001	.word	0x00000000, 0x00040001, 0x04040100, 0x00000100	.word	0x00000101, 0x04040101, 0x00040000, 0x04000001	.word	0x04040001, 0x04000100, 0x00040101, 0x04040000	.word	0x00040100, 0x00000000, 0x04000000, 0x00040101	.word	0x04040100, 0x00000100, 0x00000001, 0x00040000	.word	0x00000101, 0x00040001, 0x04040000, 0x04000101	.word	0x00000000, 0x04040100, 0x00040100, 0x04040001	.word	0x00040001, 0x04000000, 0x04040101, 0x00000001	.word	0x00040101, 0x04000001, 0x04000000, 0x04040101	.word	0x00040000, 0x04000100, 0x04000101, 0x00040100	.word	0x04000100, 0x00000000, 0x04040001, 0x00000101	.word	0x04000001, 0x00040101, 0x00000100, 0x04040000	! nibble 3	.word	0x00401008, 0x10001000, 0x00000008, 0x10401008	.word	0x00000000, 0x10400000, 0x10001008, 0x00400008	.word	0x10401000, 0x10000008, 0x10000000, 0x00001008	.word	0x10000008, 0x00401008, 0x00400000, 0x10000000	.word	0x10400008, 0x00401000, 0x00001000, 0x00000008	.word	0x00401000, 0x10001008, 0x10400000, 0x00001000	.word	0x00001008, 0x00000000, 0x00400008, 0x10401000	.word	0x10001000, 0x10400008, 0x10401008, 0x00400000	.word	0x10400008, 0x00001008, 0x00400000, 0x10000008	.word	0x00401000, 0x10001000, 0x00000008, 0x10400000	.word	0x10001008, 0x00000000, 0x00001000, 0x00400008	.word	0x00000000, 0x10400008, 0x10401000, 0x00001000	.word	0x10000000, 0x10401008, 0x00401008, 0x00400000	.word	0x10401008, 0x00000008, 0x10001000, 0x00401008	.word	0x00400008, 0x00401000, 0x10400000, 0x10001008	.word	0x00001008, 0x10000000, 0x10000008, 0x10401000	! nibble 4	.word	0x08000000, 0x00010000, 0x00000400, 0x08010420	.word	0x08010020, 0x08000400, 0x00010420, 0x08010000	.word	0x00010000, 0x00000020, 0x08000020, 0x00010400	.word	0x08000420, 0x08010020, 0x08010400, 0x00000000	.word	0x00010400, 0x08000000, 0x00010020, 0x00000420	.word	0x08000400, 0x00010420, 0x00000000, 0x08000020	.word	0x00000020, 0x08000420, 0x08010420, 0x00010020	.word	0x08010000, 0x00000400, 0x00000420, 0x08010400	.word	0x08010400, 0x08000420, 0x00010020, 0x08010000	.word	0x00010000, 0x00000020, 0x08000020, 0x08000400	.word	0x08000000, 0x00010400, 0x08010420, 0x00000000	.word	0x00010420, 0x08000000, 0x00000400, 0x00010020	.word	0x08000420, 0x00000400, 0x00000000, 0x08010420	.word	0x08010020, 0x08010400, 0x00000420, 0x00010000	.word	0x00010400, 0x08010020, 0x08000400, 0x00000420	.word	0x00000020, 0x00010420, 0x08010000, 0x08000020	! nibble 5	.word	0x80000040, 0x00200040, 0x00000000, 0x80202000	.word	0x00200040, 0x00002000, 0x80002040, 0x00200000	.word	0x00002040, 0x80202040, 0x00202000, 0x80000000	.word	0x80002000, 0x80000040, 0x80200000, 0x00202040	.word	0x00200000, 0x80002040, 0x80200040, 0x00000000	.word	0x00002000, 0x00000040, 0x80202000, 0x80200040	.word	0x80202040, 0x80200000, 0x80000000, 0x00002040	.word	0x00000040, 0x00202000, 0x00202040, 0x80002000	.word	0x00002040, 0x80000000, 0x80002000, 0x00202040	.word	0x80202000, 0x00200040, 0x00000000, 0x80002000	.word	0x80000000, 0x00002000, 0x80200040, 0x00200000	.word	0x00200040, 0x80202040, 0x00202000, 0x00000040	.word	0x80202040, 0x00202000, 0x00200000, 0x80002040	.word	0x80000040, 0x80200000, 0x00202040, 0x00000000	.word	0x00002000, 0x80000040, 0x80002040, 0x80202000	.word	0x80200000, 0x00002040, 0x00000040, 0x80200040	! nibble 6	.word	0x00004000, 0x00000200, 0x01000200, 0x01000004	.word	0x01004204, 0x00004004, 0x00004200, 0x00000000	.word	0x01000000, 0x01000204, 0x00000204, 0x01004000	.word	0x00000004, 0x01004200, 0x01004000, 0x00000204	.word	0x01000204, 0x00004000, 0x00004004, 0x01004204	.word	0x00000000, 0x01000200, 0x01000004, 0x00004200	.word	0x01004004, 0x00004204, 0x01004200, 0x00000004	.word	0x00004204, 0x01004004, 0x00000200, 0x01000000	.word	0x00004204, 0x01004000, 0x01004004, 0x00000204	.word	0x00004000, 0x00000200, 0x01000000, 0x01004004	.word	0x01000204, 0x00004204, 0x00004200, 0x00000000	.word	0x00000200, 0x01000004, 0x00000004, 0x01000200	.word	0x00000000, 0x01000204, 0x01000200, 0x00004200	.word	0x00000204, 0x00004000, 0x01004204, 0x01000000	.word	0x01004200, 0x00000004, 0x00004004, 0x01004204	.word	0x01000004, 0x01004200, 0x01004000, 0x00004004	! nibble 7	.word	0x20800080, 0x20820000, 0x00020080, 0x00000000	.word	0x20020000, 0x00800080, 0x20800000, 0x20820080	.word	0x00000080, 0x20000000, 0x00820000, 0x00020080	.word	0x00820080, 0x20020080, 0x20000080, 0x20800000	.word	0x00020000, 0x00820080, 0x00800080, 0x20020000	.word	0x20820080, 0x20000080, 0x00000000, 0x00820000	.word	0x20000000, 0x00800000, 0x20020080, 0x20800080	.word	0x00800000, 0x00020000, 0x20820000, 0x00000080	.word	0x00800000, 0x00020000, 0x20000080, 0x20820080	.word	0x00020080, 0x20000000, 0x00000000, 0x00820000	.word	0x20800080, 0x20020080, 0x20020000, 0x00800080	.word	0x20820000, 0x00000080, 0x00800080, 0x20020000	.word	0x20820080, 0x00800000, 0x20800000, 0x20000080	.word	0x00820000, 0x00020080, 0x20020080, 0x20800000	.word	0x00000080, 0x20820000, 0x00820080, 0x00000000	.word	0x20000000, 0x20800080, 0x00020000, 0x00820080

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -