Compare commits
	
		
			379 Commits
		
	
	
		
			OpenSSL_0_
			...
			OpenSSL-fi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6f93fd5685 | ||
| 
						 | 
					45b364ddab | ||
| 
						 | 
					8887e81bd7 | ||
| 
						 | 
					9008856f7a | ||
| 
						 | 
					1c4273ae0d | ||
| 
						 | 
					1ba833a427 | ||
| 
						 | 
					7e994953c9 | ||
| 
						 | 
					f97b8f3114 | ||
| 
						 | 
					c9a0ab4907 | ||
| 
						 | 
					cdabf88810 | ||
| 
						 | 
					e756ea4722 | ||
| 
						 | 
					9fce443775 | ||
| 
						 | 
					e70e417baf | ||
| 
						 | 
					f64f44358d | ||
| 
						 | 
					c848cd1c35 | ||
| 
						 | 
					ef7c1a9490 | ||
| 
						 | 
					9b4e99ebd1 | ||
| 
						 | 
					351b731d00 | ||
| 
						 | 
					3d3fd6beb2 | ||
| 
						 | 
					7486fb6550 | ||
| 
						 | 
					5786b6c92f | ||
| 
						 | 
					ae2865a771 | ||
| 
						 | 
					a302eb21b7 | ||
| 
						 | 
					409e30479a | ||
| 
						 | 
					b664536914 | ||
| 
						 | 
					6fffeb46ad | ||
| 
						 | 
					48331e3f64 | ||
| 
						 | 
					edd529ad16 | ||
| 
						 | 
					5be243dc20 | ||
| 
						 | 
					e9d247d2b0 | ||
| 
						 | 
					18ab306e63 | ||
| 
						 | 
					03c4a3a474 | ||
| 
						 | 
					e4bc9d9ef6 | ||
| 
						 | 
					9620067392 | ||
| 
						 | 
					814dfe70bc | ||
| 
						 | 
					c79cb4a07b | ||
| 
						 | 
					9ac269f78c | ||
| 
						 | 
					6fa2c4cadc | ||
| 
						 | 
					1980bc91fe | ||
| 
						 | 
					8b7745571f | ||
| 
						 | 
					0d2b761dae | ||
| 
						 | 
					85a752e838 | ||
| 
						 | 
					34d67fd5f6 | ||
| 
						 | 
					7c01fd975c | ||
| 
						 | 
					8da1de4a5a | ||
| 
						 | 
					7bff8fd23d | ||
| 
						 | 
					7292151850 | ||
| 
						 | 
					1b4a2cf20b | ||
| 
						 | 
					0c19f2c725 | ||
| 
						 | 
					d48c5e8c45 | ||
| 
						 | 
					f645290f31 | ||
| 
						 | 
					9b95537a01 | ||
| 
						 | 
					a383b2546e | ||
| 
						 | 
					ff81ee92cb | ||
| 
						 | 
					87863a0cd4 | ||
| 
						 | 
					012d1c8dd9 | ||
| 
						 | 
					86fbdae6e8 | ||
| 
						 | 
					e0c5f4e438 | ||
| 
						 | 
					d946944dbd | ||
| 
						 | 
					ddc3e0dd03 | ||
| 
						 | 
					fbe1fcccdc | ||
| 
						 | 
					4578122b60 | ||
| 
						 | 
					e361b2ff2e | ||
| 
						 | 
					57362da5ab | ||
| 
						 | 
					002104370a | ||
| 
						 | 
					fda62b13d4 | ||
| 
						 | 
					a7fdb764c5 | ||
| 
						 | 
					3b2e785e50 | ||
| 
						 | 
					280bc44730 | ||
| 
						 | 
					9e1468e482 | ||
| 
						 | 
					b3307eae6d | ||
| 
						 | 
					19cf9463e7 | ||
| 
						 | 
					2dd4c4b430 | ||
| 
						 | 
					86160f3c41 | ||
| 
						 | 
					0633bca11c | ||
| 
						 | 
					97c9cf71aa | ||
| 
						 | 
					a0dc48e7db | ||
| 
						 | 
					22f6a2b271 | ||
| 
						 | 
					a3a426cfb5 | ||
| 
						 | 
					93d4d2b900 | ||
| 
						 | 
					2f9048b8a1 | ||
| 
						 | 
					d73ed541db | ||
| 
						 | 
					e6e5592a50 | ||
| 
						 | 
					663bbb6367 | ||
| 
						 | 
					98ced05c56 | ||
| 
						 | 
					5b75e1cff4 | ||
| 
						 | 
					f36a8c2060 | ||
| 
						 | 
					90ac9ec264 | ||
| 
						 | 
					fe5c4c885b | ||
| 
						 | 
					1950e8acea | ||
| 
						 | 
					437bafa5cc | ||
| 
						 | 
					7c78f06301 | ||
| 
						 | 
					b27278d0cf | ||
| 
						 | 
					24a69a8196 | ||
| 
						 | 
					b3049d696b | ||
| 
						 | 
					77b265f48c | ||
| 
						 | 
					735b9eeed5 | ||
| 
						 | 
					67c31c4b61 | ||
| 
						 | 
					0406ce2646 | ||
| 
						 | 
					76108ba7eb | ||
| 
						 | 
					4d27e3d339 | ||
| 
						 | 
					7d59e441ca | ||
| 
						 | 
					3e3c47d5d5 | ||
| 
						 | 
					03b7b4690c | ||
| 
						 | 
					0fd9322af1 | ||
| 
						 | 
					7016b1952e | ||
| 
						 | 
					ff3e014820 | ||
| 
						 | 
					50cd0f0eb3 | ||
| 
						 | 
					32098b7565 | ||
| 
						 | 
					bf4131fbf9 | ||
| 
						 | 
					2ac869590f | ||
| 
						 | 
					4742bc0f6f | ||
| 
						 | 
					02e483d236 | ||
| 
						 | 
					1a58139aaa | ||
| 
						 | 
					a32f4770e9 | ||
| 
						 | 
					086d475ffb | ||
| 
						 | 
					7f1288da93 | ||
| 
						 | 
					0a6e92a88f | ||
| 
						 | 
					36eaa70621 | ||
| 
						 | 
					d7dc9a7ce3 | ||
| 
						 | 
					319e19db9c | ||
| 
						 | 
					ef85b85b12 | ||
| 
						 | 
					4d4d27a2a0 | ||
| 
						 | 
					8f0d89092e | ||
| 
						 | 
					c4a2cab0bb | ||
| 
						 | 
					6d73d35f4f | ||
| 
						 | 
					f53e66af67 | ||
| 
						 | 
					5cbe626d26 | ||
| 
						 | 
					fe93a60b00 | ||
| 
						 | 
					5e10ca5618 | ||
| 
						 | 
					4e8da09800 | ||
| 
						 | 
					203ae57fe0 | ||
| 
						 | 
					529c33f1e8 | ||
| 
						 | 
					af18a34478 | ||
| 
						 | 
					da5c0127ac | ||
| 
						 | 
					ce0e12d29a | ||
| 
						 | 
					87339c6290 | ||
| 
						 | 
					0a22e7446b | ||
| 
						 | 
					b56cb7c6ea | ||
| 
						 | 
					cd5ab329f2 | ||
| 
						 | 
					80106dc5fb | ||
| 
						 | 
					0fa79cbe17 | ||
| 
						 | 
					be22102d82 | ||
| 
						 | 
					1ad95f8217 | ||
| 
						 | 
					5f1211834f | ||
| 
						 | 
					28feb1f8da | ||
| 
						 | 
					9596d1e63b | ||
| 
						 | 
					626bebeede | ||
| 
						 | 
					dfe42a131f | ||
| 
						 | 
					1970bc2703 | ||
| 
						 | 
					08debe11f8 | ||
| 
						 | 
					9c7e058216 | ||
| 
						 | 
					b01e8b2063 | ||
| 
						 | 
					100868d1cf | ||
| 
						 | 
					0712210f03 | ||
| 
						 | 
					8431a6aaf5 | ||
| 
						 | 
					2b4a783f66 | ||
| 
						 | 
					25df4a81cc | ||
| 
						 | 
					23830280e4 | ||
| 
						 | 
					bfdfc67b01 | ||
| 
						 | 
					4764a0543d | ||
| 
						 | 
					d92b0efbb8 | ||
| 
						 | 
					b329cc2410 | ||
| 
						 | 
					ed31fe68ff | ||
| 
						 | 
					8fa41c6696 | ||
| 
						 | 
					707a028c8b | ||
| 
						 | 
					9593bc46bf | ||
| 
						 | 
					5c65d38219 | ||
| 
						 | 
					1b8b2d9300 | ||
| 
						 | 
					4e1778b0d8 | ||
| 
						 | 
					982c67fbaa | ||
| 
						 | 
					2ef2463643 | ||
| 
						 | 
					585eb117d4 | ||
| 
						 | 
					7c27ac1030 | ||
| 
						 | 
					475631c31a | ||
| 
						 | 
					218ba8cb9d | ||
| 
						 | 
					e881c00515 | ||
| 
						 | 
					6c3fca2b10 | ||
| 
						 | 
					0225c7a41e | ||
| 
						 | 
					a334b0436d | ||
| 
						 | 
					af13a3949d | ||
| 
						 | 
					ffc35e73b4 | ||
| 
						 | 
					a197212e0f | ||
| 
						 | 
					8944220221 | ||
| 
						 | 
					5fd76ba57a | ||
| 
						 | 
					df50ec372e | ||
| 
						 | 
					49fa74385d | ||
| 
						 | 
					899f528c1a | ||
| 
						 | 
					5faa5a9476 | ||
| 
						 | 
					ddb0cb5bfd | ||
| 
						 | 
					b2d65cbac7 | ||
| 
						 | 
					6be8288928 | ||
| 
						 | 
					9fe07b7cf0 | ||
| 
						 | 
					0c86c87c60 | ||
| 
						 | 
					e20d6ef3d6 | ||
| 
						 | 
					27f50994ff | ||
| 
						 | 
					53c381105a | ||
| 
						 | 
					33d0ef8fde | ||
| 
						 | 
					b2acf7a572 | ||
| 
						 | 
					e8d2d9478d | ||
| 
						 | 
					23b3b61921 | ||
| 
						 | 
					d265676989 | ||
| 
						 | 
					69fc3dff96 | ||
| 
						 | 
					667731b635 | ||
| 
						 | 
					a416ca47ac | ||
| 
						 | 
					2714e2ac89 | ||
| 
						 | 
					1139eeecbc | ||
| 
						 | 
					1b936a5e37 | ||
| 
						 | 
					0cca0fe0c2 | ||
| 
						 | 
					56474376dc | ||
| 
						 | 
					3e511f167e | ||
| 
						 | 
					282af42404 | ||
| 
						 | 
					a81f337331 | ||
| 
						 | 
					1729dca9a8 | ||
| 
						 | 
					9719193222 | ||
| 
						 | 
					e6fa7c1276 | ||
| 
						 | 
					cf7053430d | ||
| 
						 | 
					ff03c6bc97 | ||
| 
						 | 
					82c8b6b74d | ||
| 
						 | 
					cb6fdc3a49 | ||
| 
						 | 
					8c3b5d5f27 | ||
| 
						 | 
					dc83f2e312 | ||
| 
						 | 
					6693e26927 | ||
| 
						 | 
					793364457b | ||
| 
						 | 
					6b05350495 | ||
| 
						 | 
					daec9a56a0 | ||
| 
						 | 
					5c77786a55 | ||
| 
						 | 
					42bc3582a9 | ||
| 
						 | 
					2050f6514f | ||
| 
						 | 
					5068d7dda4 | ||
| 
						 | 
					55768cf773 | ||
| 
						 | 
					6c69dcd9f5 | ||
| 
						 | 
					ad4297dd9c | ||
| 
						 | 
					aeb9ccfaad | ||
| 
						 | 
					79b335a4b5 | ||
| 
						 | 
					dcc309548e | ||
| 
						 | 
					8eae0ff0f7 | ||
| 
						 | 
					5c4a07551e | ||
| 
						 | 
					b443a0ea5d | ||
| 
						 | 
					1f4a5a3339 | ||
| 
						 | 
					20fb51b1a7 | ||
| 
						 | 
					551bfa60e0 | ||
| 
						 | 
					ab50cf18db | ||
| 
						 | 
					31c0a38482 | ||
| 
						 | 
					91c88deafe | ||
| 
						 | 
					a91cb15daa | ||
| 
						 | 
					d2890f6223 | ||
| 
						 | 
					1ce5bb27e4 | ||
| 
						 | 
					04262cee42 | ||
| 
						 | 
					a5a1e71e86 | ||
| 
						 | 
					06d2a382c4 | ||
| 
						 | 
					4630a51537 | ||
| 
						 | 
					01f2ee2bc6 | ||
| 
						 | 
					def5aefa7f | ||
| 
						 | 
					5ba7d69c66 | ||
| 
						 | 
					cf81dc74bd | ||
| 
						 | 
					46c646225d | ||
| 
						 | 
					d18c4d09d1 | ||
| 
						 | 
					e5ad779b69 | ||
| 
						 | 
					cb36743161 | ||
| 
						 | 
					fb3eab3562 | ||
| 
						 | 
					2724bcac2f | ||
| 
						 | 
					3431c07a66 | ||
| 
						 | 
					9abf011643 | ||
| 
						 | 
					75cdb055e6 | ||
| 
						 | 
					f4207058b8 | ||
| 
						 | 
					900b1eb869 | ||
| 
						 | 
					e3b61b1e57 | ||
| 
						 | 
					750779da07 | ||
| 
						 | 
					157f01a8ef | ||
| 
						 | 
					491923fde1 | ||
| 
						 | 
					273f5726a5 | ||
| 
						 | 
					a37778046d | ||
| 
						 | 
					8a087e57d2 | ||
| 
						 | 
					e384fd9418 | ||
| 
						 | 
					f6e32f9db4 | ||
| 
						 | 
					66bb600b05 | ||
| 
						 | 
					c3b2d69945 | ||
| 
						 | 
					619991cc3e | ||
| 
						 | 
					3c410172b7 | ||
| 
						 | 
					56319ad00e | ||
| 
						 | 
					f7832889d3 | ||
| 
						 | 
					46fdad292a | ||
| 
						 | 
					da99684a8e | ||
| 
						 | 
					2130ee35d9 | ||
| 
						 | 
					15f239a4a3 | ||
| 
						 | 
					223ab84726 | ||
| 
						 | 
					94d66c3182 | ||
| 
						 | 
					a0dd62bdb7 | ||
| 
						 | 
					fd6d2e0754 | ||
| 
						 | 
					4a4d3c02f2 | ||
| 
						 | 
					7abd533793 | ||
| 
						 | 
					b1816f93e1 | ||
| 
						 | 
					e1904f9eec | ||
| 
						 | 
					9f3d5018c4 | ||
| 
						 | 
					768729afbe | ||
| 
						 | 
					0c96e35c42 | ||
| 
						 | 
					72e2934909 | ||
| 
						 | 
					26d96f26da | ||
| 
						 | 
					5fcc83ed1e | ||
| 
						 | 
					9ecb20f1de | ||
| 
						 | 
					b611ff350c | ||
| 
						 | 
					7f790e0575 | ||
| 
						 | 
					dccf15ee25 | ||
| 
						 | 
					89d8a20f22 | ||
| 
						 | 
					782f8600fa | ||
| 
						 | 
					f2008fe3fd | ||
| 
						 | 
					70b3786ffe | ||
| 
						 | 
					b48fb91edd | ||
| 
						 | 
					8a19891b2a | ||
| 
						 | 
					f35d0948eb | ||
| 
						 | 
					d0f2c1bb81 | ||
| 
						 | 
					7ba410f9a5 | ||
| 
						 | 
					36c2be5645 | ||
| 
						 | 
					0869cd2676 | ||
| 
						 | 
					4ac5596a86 | ||
| 
						 | 
					3df76b15ed | ||
| 
						 | 
					9b3cce3d00 | ||
| 
						 | 
					c8a2f669f3 | ||
| 
						 | 
					04a2a836f7 | ||
| 
						 | 
					d39e69c95a | ||
| 
						 | 
					69ffdb2d46 | ||
| 
						 | 
					e301a26ade | ||
| 
						 | 
					2ed0cf8eef | ||
| 
						 | 
					1c2cbe6fcc | ||
| 
						 | 
					023616e32d | ||
| 
						 | 
					b2703470e0 | ||
| 
						 | 
					452cd79114 | ||
| 
						 | 
					9eaca0079f | ||
| 
						 | 
					bbaf3c2b40 | ||
| 
						 | 
					ce147f8998 | ||
| 
						 | 
					4e99f848d8 | ||
| 
						 | 
					358cf2f6e8 | ||
| 
						 | 
					407c2c1106 | ||
| 
						 | 
					2e8aaf94c2 | ||
| 
						 | 
					3108a80b09 | ||
| 
						 | 
					bfa3933c8b | ||
| 
						 | 
					40b4a633a1 | ||
| 
						 | 
					fc784cbc5c | ||
| 
						 | 
					d20b5c2043 | ||
| 
						 | 
					fdf45c44be | ||
| 
						 | 
					68b08c56c2 | ||
| 
						 | 
					4416eec8ca | ||
| 
						 | 
					709af3877d | ||
| 
						 | 
					8651ba5d45 | ||
| 
						 | 
					efbb2cb4e5 | ||
| 
						 | 
					dec45d606f | ||
| 
						 | 
					6dfd1801fe | ||
| 
						 | 
					d8242c65b3 | ||
| 
						 | 
					ee42430cc8 | ||
| 
						 | 
					da3fe316cf | ||
| 
						 | 
					c8214d6c8b | ||
| 
						 | 
					063b216760 | ||
| 
						 | 
					65f0a05325 | ||
| 
						 | 
					952b6955c0 | ||
| 
						 | 
					6f74afaa57 | ||
| 
						 | 
					3edefe670a | ||
| 
						 | 
					a461d307f2 | ||
| 
						 | 
					89a4dad179 | ||
| 
						 | 
					1ea2fda9dc | ||
| 
						 | 
					f41dcf3d50 | ||
| 
						 | 
					1e6031eeb7 | ||
| 
						 | 
					d9e61666c9 | ||
| 
						 | 
					2f07e0d591 | ||
| 
						 | 
					b0a3d8dd27 | ||
| 
						 | 
					a7100590fe | ||
| 
						 | 
					7b1ef38609 | ||
| 
						 | 
					3f5602ce04 | ||
| 
						 | 
					be0dccdd9e | ||
| 
						 | 
					50a4d84e79 | ||
| 
						 | 
					0135aa9888 | ||
| 
						 | 
					692e644df6 | ||
| 
						 | 
					3b72341958 | ||
| 
						 | 
					3a0278b211 | ||
| 
						 | 
					304ba9fa78 | ||
| 
						 | 
					4484703f5e | ||
| 
						 | 
					6b7751ac2c | ||
| 
						 | 
					7af4688a8f | ||
| 
						 | 
					d8360c3a8a | 
							
								
								
									
										475
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										475
									
								
								CHANGES
									
									
									
									
									
								
							@@ -2,7 +2,476 @@
 | 
				
			|||||||
 OpenSSL CHANGES
 | 
					 OpenSSL CHANGES
 | 
				
			||||||
 _______________
 | 
					 _______________
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8e and 0.9.8f  [xx XXX xxxx]
 | 
					 Changes between 0.9.8h and 0.9.8i  [xx XXX xxxx]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix a state transitition in s3_srvr.c and d1_srvr.c
 | 
				
			||||||
 | 
					     (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
 | 
				
			||||||
 | 
					     [Nagendra Modadugu]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) The fix in 0.9.8c that supposedly got rid of unsafe
 | 
				
			||||||
 | 
					     double-checked locking was incomplete for RSA blinding,
 | 
				
			||||||
 | 
					     addressing just one layer of what turns out to have been
 | 
				
			||||||
 | 
					     doubly unsafe triple-checked locking.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     So now fix this for real by retiring the MONT_HELPER macro
 | 
				
			||||||
 | 
					     in crypto/rsa/rsa_eay.c.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Bodo Moeller; problem pointed out by Marius Schilder]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Various precautionary measures:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
 | 
				
			||||||
 | 
					       (NB: This would require knowledge of the secret session ticket key
 | 
				
			||||||
 | 
					       to exploit, in which case you'd be SOL either way.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     - Change bn_nist.c so that it will properly handle input BIGNUMs
 | 
				
			||||||
 | 
					       outside the expected range.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
 | 
				
			||||||
 | 
					       builds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Neel Mehta, Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add support for Local Machine Keyset attribute in PKCS#12 files.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix BN_GF2m_mod_arr() top-bit cleanup code.
 | 
				
			||||||
 | 
					     [Huang Ying]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Expand ENGINE to support engine supplied SSL client certificate functions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     This work was sponsored by Logica.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
 | 
				
			||||||
 | 
					     keystores. Support for SSL/TLS client authentication too.
 | 
				
			||||||
 | 
					     Not compiled unless enable-capieng specified to Configure.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     This work was sponsored by Logica.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Allow engines to be "soft loaded" - i.e. optionally don't die if
 | 
				
			||||||
 | 
					     the load fails. Useful for distros.
 | 
				
			||||||
 | 
					     [Ben Laurie and the FreeBSD team]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8g and 0.9.8h  [28 May 2008]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix flaw if 'Server Key exchange message' is omitted from a TLS
 | 
				
			||||||
 | 
					     handshake which could lead to a cilent crash as found using the
 | 
				
			||||||
 | 
					     Codenomicon TLS test suite (CVE-2008-1672) 
 | 
				
			||||||
 | 
					     [Steve Henson, Mark Cox]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix double free in TLS server name extensions which could lead to
 | 
				
			||||||
 | 
					     a remote crash found by Codenomicon TLS test suite (CVE-2008-0891) 
 | 
				
			||||||
 | 
					     [Joe Orton]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Clear error queue in SSL_CTX_use_certificate_chain_file()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Clear the error queue to ensure that error entries left from
 | 
				
			||||||
 | 
					     older function calls do not interfere with the correct operation.
 | 
				
			||||||
 | 
					     [Lutz Jaenicke, Erik de Castro Lopo]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Remove root CA certificates of commercial CAs:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     The OpenSSL project does not recommend any specific CA and does not
 | 
				
			||||||
 | 
					     have any policy with respect to including or excluding any CA.
 | 
				
			||||||
 | 
					     Therefore it does not make any sense to ship an arbitrary selection
 | 
				
			||||||
 | 
					     of root CA certificates with the OpenSSL software.
 | 
				
			||||||
 | 
					     [Lutz Jaenicke]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) RSA OAEP patches to fix two separate invalid memory reads.
 | 
				
			||||||
 | 
					     The first one involves inputs when 'lzero' is greater than
 | 
				
			||||||
 | 
					     'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
 | 
				
			||||||
 | 
					     before the beginning of from). The second one involves inputs where
 | 
				
			||||||
 | 
					     the 'db' section contains nothing but zeroes (there is a one-byte
 | 
				
			||||||
 | 
					     invalid read after the end of 'db').
 | 
				
			||||||
 | 
					     [Ivan Nestlerode <inestlerode@us.ibm.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Partial backport from 0.9.9-dev:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Introduce bn_mul_mont (dedicated Montgomery multiplication
 | 
				
			||||||
 | 
					     procedure) as a candidate for BIGNUM assembler implementation.
 | 
				
			||||||
 | 
					     While 0.9.9-dev uses assembler for various architectures, only
 | 
				
			||||||
 | 
					     x86_64 is available by default here in the 0.9.8 branch, and
 | 
				
			||||||
 | 
					     32-bit x86 is available through a compile-time setting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     To try the 32-bit x86 assembler implementation, use Configure
 | 
				
			||||||
 | 
					     option "enable-montasm" (which exists only for this backport).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     As "enable-montasm" for 32-bit x86 disclaims code stability
 | 
				
			||||||
 | 
					     anyway, in this constellation we activate additional code
 | 
				
			||||||
 | 
					     backported from 0.9.9-dev for further performance improvements,
 | 
				
			||||||
 | 
					     namely BN_from_montgomery_word.  (To enable this otherwise,
 | 
				
			||||||
 | 
					     e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Andy Polyakov (backport partially by Bodo Moeller)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add TLS session ticket callback. This allows an application to set
 | 
				
			||||||
 | 
					     TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
 | 
				
			||||||
 | 
					     values. This is useful for key rollover for example where several key
 | 
				
			||||||
 | 
					     sets may exist with different names.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Reverse ENGINE-internal logic for caching default ENGINE handles.
 | 
				
			||||||
 | 
					     This was broken until now in 0.9.8 releases, such that the only way
 | 
				
			||||||
 | 
					     a registered ENGINE could be used (assuming it initialises
 | 
				
			||||||
 | 
					     successfully on the host) was to explicitly set it as the default
 | 
				
			||||||
 | 
					     for the relevant algorithms. This is in contradiction with 0.9.7
 | 
				
			||||||
 | 
					     behaviour and the documentation. With this fix, when an ENGINE is
 | 
				
			||||||
 | 
					     registered into a given algorithm's table of implementations, the
 | 
				
			||||||
 | 
					     'uptodate' flag is reset so that auto-discovery will be used next
 | 
				
			||||||
 | 
					     time a new context for that algorithm attempts to select an
 | 
				
			||||||
 | 
					     implementation.
 | 
				
			||||||
 | 
					     [Ian Lister (tweaked by Geoff Thorpe)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
 | 
				
			||||||
 | 
					     implemention in the following ways:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
 | 
				
			||||||
 | 
					     hard coded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Lack of BER streaming support means one pass streaming processing is
 | 
				
			||||||
 | 
					     only supported if data is detached: setting the streaming flag is
 | 
				
			||||||
 | 
					     ignored for embedded content.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     CMS support is disabled by default and must be explicitly enabled
 | 
				
			||||||
 | 
					     with the enable-cms configuration option.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Update the GMP engine glue to do direct copies between BIGNUM and
 | 
				
			||||||
 | 
					     mpz_t when openssl and GMP use the same limb size. Otherwise the
 | 
				
			||||||
 | 
					     existing "conversion via a text string export" trick is still used.
 | 
				
			||||||
 | 
					     [Paul Sheer <paulsheer@gmail.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Zlib compression BIO. This is a filter BIO which compressed and
 | 
				
			||||||
 | 
					     uncompresses any data passed through it.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add AES_wrap_key() and AES_unwrap_key() functions to implement
 | 
				
			||||||
 | 
					     RFC3394 compatible AES key wrapping.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
 | 
				
			||||||
 | 
					     sets string data without copying. X509_ALGOR_set0() and
 | 
				
			||||||
 | 
					     X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
 | 
				
			||||||
 | 
					     data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
 | 
				
			||||||
 | 
					     from an X509_ATTRIBUTE structure optionally checking it occurs only
 | 
				
			||||||
 | 
					     once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
 | 
				
			||||||
 | 
					     data.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
 | 
				
			||||||
 | 
					     to get the expected BN_FLG_CONSTTIME behavior.
 | 
				
			||||||
 | 
					     [Bodo Moeller (Google)]
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  *) Netware support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
 | 
				
			||||||
 | 
					     - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
 | 
				
			||||||
 | 
					     - added some more tests to do_tests.pl
 | 
				
			||||||
 | 
					     - fixed RunningProcess usage so that it works with newer LIBC NDKs too
 | 
				
			||||||
 | 
					     - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
 | 
				
			||||||
 | 
					     - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
 | 
				
			||||||
 | 
					       netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
 | 
				
			||||||
 | 
					     - various changes to netware.pl to enable gcc-cross builds on Win32
 | 
				
			||||||
 | 
					       platform
 | 
				
			||||||
 | 
					     - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
 | 
				
			||||||
 | 
					     - various changes to fix missing prototype warnings
 | 
				
			||||||
 | 
					     - fixed x86nasm.pl to create correct asm files for NASM COFF output
 | 
				
			||||||
 | 
					     - added AES, WHIRLPOOL and CPUID assembler code to build files
 | 
				
			||||||
 | 
					     - added missing AES assembler make rules to mk1mf.pl
 | 
				
			||||||
 | 
					     - fixed order of includes in apps/ocsp.c so that e_os.h settings apply
 | 
				
			||||||
 | 
					     [Guenter Knauf <eflash@gmx.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Implement certificate status request TLS extension defined in RFC3546.
 | 
				
			||||||
 | 
					     A client can set the appropriate parameters and receive the encoded
 | 
				
			||||||
 | 
					     OCSP response via a callback. A server can query the supplied parameters
 | 
				
			||||||
 | 
					     and set the encoded OCSP response in the callback. Add simplified examples
 | 
				
			||||||
 | 
					     to s_client and s_server.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8g and 0.9.8h-fips  [xx XXX xxxx]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add flag EVP_CIPH_FLAG_LENGTH_BITS to indicate that input buffer length
 | 
				
			||||||
 | 
					     is in bits not bytes. The Monte Carlo FIPS140-2 CFB1 tests require this.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add option --with-fipslibdir to specify location of fipscanister.lib
 | 
				
			||||||
 | 
					     and friends. When combined with fips build option fipscanister.lib is
 | 
				
			||||||
 | 
					     not built but linked from the supplied directory. Always link fips
 | 
				
			||||||
 | 
					     utilities against fiscanister.lib only except in fipsdso builds.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add SSE2 instruction support to WIN32 build. These will be compiled
 | 
				
			||||||
 | 
					     by default and used if an appopriate CPU is detected. Some older versions
 | 
				
			||||||
 | 
					     of NASM or MASM which don't support SSE2 will need to be updated. 
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Tolerate DigestInfo structure with absent parameters in FIPS mode
 | 
				
			||||||
 | 
					     (as required by several standards).
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Enhance mkfipsscr.pl to cope with different directory layouts. It now
 | 
				
			||||||
 | 
					     relies on the filename and makes no assumptions about the pathname.
 | 
				
			||||||
 | 
					     In the case of PSS it scans the file to determine the salt length.
 | 
				
			||||||
 | 
					     Paths can be filtered. Also reports duplicate and missing files.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Updates to WIN32 build system. Make use of AES assembly language routines.
 | 
				
			||||||
 | 
					     Use assembly language routines in FIPS compilation.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Use standard implementations of SHAx, DES, AES under crypto/ in FIPS
 | 
				
			||||||
 | 
					     mode to avoid having to maintain two versions. This will also make use
 | 
				
			||||||
 | 
					     of appropriate assembly language optimizations.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Check for selftest status in all crypto operations and exit with a
 | 
				
			||||||
 | 
					     fatal error if selftest failed.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) New flag in EVP_CIPHER: EVP_CIPH_FLAG_DEFAULT_ASN1. This will
 | 
				
			||||||
 | 
					     automatically use EVP_CIPHER_{get,set}_asn1_iv and avoid the
 | 
				
			||||||
 | 
					     need for any ASN1 dependencies in FIPS library. Move AES and 3DES
 | 
				
			||||||
 | 
					     cipher definitions to fips library and modify AES and 3DES algorithm
 | 
				
			||||||
 | 
					     tests and self tests to use EVP.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Move EVP cipher code into enc_min.c to support a minimal implementation
 | 
				
			||||||
 | 
					     for use by FIPS applications.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add algorithm config module. Currently just handles setting FIPS mode.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Rewrite self tests and pairwise tests to use EVP. Add more extensive
 | 
				
			||||||
 | 
					     self tests for RSA in all digests and modes.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) New flags RSA_FIPS_METHOD and DSA_FIPS_METHOD to indicate a method is
 | 
				
			||||||
 | 
					     allowed in FIPS mode. Disable direct low level RSA and DSA signature
 | 
				
			||||||
 | 
					     operations in FIPS mode so all operations have to be made via EVP.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) New flag EVP_MD_FLAG_SVCTX which passes EVP_MD_CTX and key to underlying
 | 
				
			||||||
 | 
					     sign/verify method. This permits the method to perform finalization
 | 
				
			||||||
 | 
					     and signing itself and have access to the EVP_MD_CTX structure in case
 | 
				
			||||||
 | 
					     additional parameters are needed. Modify fips_{dsa,rsa}_{sign,verify}
 | 
				
			||||||
 | 
					     to use EVP_MD_FLAG_SVCTX and support PSS and X9.31 RSA modes.
 | 
				
			||||||
 | 
					     Modify RSA algorithm test programs to use new parameters.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add small standalone ASN1 encoder/decoder to handle DSA signature format.
 | 
				
			||||||
 | 
					     Modify test, algorithm test and selftest routines to use EVP for DSA.
 | 
				
			||||||
 | 
					     Move FIPS implementation of EVP_sha*() and EVP_dss1() under fips-1.0.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Modify VC++ build system to rename .text and .rdata segments in
 | 
				
			||||||
 | 
					     FIPS sources to .fipst${a,b,c}, and $fipsr${a,b,c} and place them
 | 
				
			||||||
 | 
					     in a static library fipscanister.lib using a perl script. These are
 | 
				
			||||||
 | 
					     then combined by the VC++ linker into a single segment in suffix
 | 
				
			||||||
 | 
					     order but without the suffix (i.e. .fipstx, .fipsrd and .fipsda).
 | 
				
			||||||
 | 
					     This serves the same purpose as fipscanister.o on other platforms
 | 
				
			||||||
 | 
					     but has the advantage that it can be created using only standard VC++
 | 
				
			||||||
 | 
					     utilities.
 | 
				
			||||||
 | 
					     [Steve Henson and Andy Polyakov]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Modify WIN32 build system to forward references functions implemented
 | 
				
			||||||
 | 
					     in FIPS DLL. 
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Move error library so that all lhash dependencies are in a separate
 | 
				
			||||||
 | 
					     file. Include a simplified ERR_get_state() function for stand alone
 | 
				
			||||||
 | 
					     FIPS applications. Include a initialization function OPENSSL_init()
 | 
				
			||||||
 | 
					     to set all callbacks, automatically call OPENSSL_init() once when
 | 
				
			||||||
 | 
					     a cipher or digest is added. This should mean that almost all applications
 | 
				
			||||||
 | 
					     set the callbacks automatically. Exceptional cases can call OPENSSL_init()
 | 
				
			||||||
 | 
					     manually like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_HAVE_INIT
 | 
				
			||||||
 | 
					    OPENSSL_init();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					     before starting any threads.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Collect common functions into header file "fips_utl.h".
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Only enable dynamic lock functionality in CRYPTO_lock() when it is really
 | 
				
			||||||
 | 
					     needed. Move some lock functionality into new file dyn_lck.c .
 | 
				
			||||||
 | 
					     This further reduces FIPS dependencies allowing the complete removal
 | 
				
			||||||
 | 
					     of STACK and OBJ_bsearch().
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Reduce FIPS test program dependencies by providing stand alone
 | 
				
			||||||
 | 
					     versions of some existing functions in libcrypto. Avoid use
 | 
				
			||||||
 | 
					     of BIOs by converting to system stdio. Move some functions in FIPS
 | 
				
			||||||
 | 
					     files: e.g. all use of BIO_printf().
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Modify build of libcrypto in FIPS mode by using a perl 
 | 
				
			||||||
 | 
					     script "arx.pl" which calls the archiver specifically
 | 
				
			||||||
 | 
					     excluding any FIPS dependencies in libcrypto.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Port OpenSSL 0.9.7 FIPS code to 0.9.8. Convert to new
 | 
				
			||||||
 | 
					     Makefile form. Update Configure. Convert and update
 | 
				
			||||||
 | 
					     FIPS source files. Update libcrypto, libssl and apps
 | 
				
			||||||
 | 
					     with additional functionality from 0.9.7 FIPS code.
 | 
				
			||||||
 | 
					     Update Windows build system.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8f and 0.9.8g  [19 Oct 2007]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix various bugs:
 | 
				
			||||||
 | 
					     + Binary incompatibility of ssl_ctx_st structure
 | 
				
			||||||
 | 
					     + DTLS interoperation with non-compliant servers
 | 
				
			||||||
 | 
					     + Don't call get_session_cb() without proposed session
 | 
				
			||||||
 | 
					     + Fix ia64 assembler code
 | 
				
			||||||
 | 
					     [Andy Polyakov, Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8e and 0.9.8f  [11 Oct 2007]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) DTLS Handshake overhaul. There were longstanding issues with
 | 
				
			||||||
 | 
					     OpenSSL DTLS implementation, which were making it impossible for
 | 
				
			||||||
 | 
					     RFC 4347 compliant client to communicate with OpenSSL server.
 | 
				
			||||||
 | 
					     Unfortunately just fixing these incompatibilities would "cut off"
 | 
				
			||||||
 | 
					     pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
 | 
				
			||||||
 | 
					     server keeps tolerating non RFC compliant syntax. The opposite is
 | 
				
			||||||
 | 
					     not true, 0.9.8f client can not communicate with earlier server.
 | 
				
			||||||
 | 
					     This update even addresses CVE-2007-4995.
 | 
				
			||||||
 | 
					     [Andy Polyakov]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Changes to avoid need for function casts in OpenSSL: some compilers
 | 
				
			||||||
 | 
					     (gcc 4.2 and later) reject their use.
 | 
				
			||||||
 | 
					     [Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
 | 
				
			||||||
 | 
					      Steve Henson]
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  *) Add RFC4507 support to OpenSSL. This includes the corrections in
 | 
				
			||||||
 | 
					     RFC4507bis. The encrypted ticket format is an encrypted encoded
 | 
				
			||||||
 | 
					     SSL_SESSION structure, that way new session features are automatically
 | 
				
			||||||
 | 
					     supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     If a client application caches session in an SSL_SESSION structure
 | 
				
			||||||
 | 
					     support is transparent because tickets are now stored in the encoded
 | 
				
			||||||
 | 
					     SSL_SESSION.
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     The SSL_CTX structure automatically generates keys for ticket
 | 
				
			||||||
 | 
					     protection in servers so again support should be possible
 | 
				
			||||||
 | 
					     with no application modification.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     If a client or server wishes to disable RFC4507 support then the option
 | 
				
			||||||
 | 
					     SSL_OP_NO_TICKET can be set.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Add a TLS extension debugging callback to allow the contents of any client
 | 
				
			||||||
 | 
					     or server extensions to be examined.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     This work was sponsored by Google.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add initial support for TLS extensions, specifically for the server_name
 | 
				
			||||||
 | 
					     extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
 | 
				
			||||||
 | 
					     have new members for a host name.  The SSL data structure has an
 | 
				
			||||||
 | 
					     additional member SSL_CTX *initial_ctx so that new sessions can be
 | 
				
			||||||
 | 
					     stored in that context to allow for session resumption, even after the
 | 
				
			||||||
 | 
					     SSL has been switched to a new SSL_CTX in reaction to a client's
 | 
				
			||||||
 | 
					     server_name extension.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     New functions (subject to change):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         SSL_get_servername()
 | 
				
			||||||
 | 
					         SSL_get_servername_type()
 | 
				
			||||||
 | 
					         SSL_set_SSL_CTX()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     New CTRL codes and macros (subject to change):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
 | 
				
			||||||
 | 
					                                 - SSL_CTX_set_tlsext_servername_callback()
 | 
				
			||||||
 | 
					         SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
 | 
				
			||||||
 | 
					                                      - SSL_CTX_set_tlsext_servername_arg()
 | 
				
			||||||
 | 
					         SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     openssl s_client has a new '-servername ...' option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     openssl s_server has new options '-servername_host ...', '-cert2 ...',
 | 
				
			||||||
 | 
					     '-key2 ...', '-servername_fatal' (subject to change).  This allows
 | 
				
			||||||
 | 
					     testing the HostName extension for a specific single host name ('-cert'
 | 
				
			||||||
 | 
					     and '-key' remain fallbacks for handshakes without HostName
 | 
				
			||||||
 | 
					     negotiation).  If the unrecogninzed_name alert has to be sent, this by
 | 
				
			||||||
 | 
					     default is a warning; it becomes fatal with the '-servername_fatal'
 | 
				
			||||||
 | 
					     option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Peter Sylvester,  Remy Allais, Christophe Renou, Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add AES and SSE2 assembly language support to VC++ build.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Mitigate attack on final subtraction in Montgomery reduction.
 | 
				
			||||||
 | 
					     [Andy Polyakov]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
 | 
				
			||||||
 | 
					     (which previously caused an internal error).
 | 
				
			||||||
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Squeeze another 10% out of IGE mode when in != out.
 | 
				
			||||||
 | 
					     [Ben Laurie]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) AES IGE mode speedup.
 | 
				
			||||||
 | 
					     [Dean Gaudet (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add the Korean symmetric 128-bit cipher SEED (see
 | 
				
			||||||
 | 
					     http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
 | 
				
			||||||
 | 
					     add SEED ciphersuites from RFC 4162:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TLS_RSA_WITH_SEED_CBC_SHA      =  "SEED-SHA"
 | 
				
			||||||
 | 
					        TLS_DHE_DSS_WITH_SEED_CBC_SHA  =  "DHE-DSS-SEED-SHA"
 | 
				
			||||||
 | 
					        TLS_DHE_RSA_WITH_SEED_CBC_SHA  =  "DHE-RSA-SEED-SHA"
 | 
				
			||||||
 | 
					        TLS_DH_anon_WITH_SEED_CBC_SHA  =  "ADH-SEED-SHA"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     To minimize changes between patchlevels in the OpenSSL 0.9.8
 | 
				
			||||||
 | 
					     series, SEED remains excluded from compilation unless OpenSSL
 | 
				
			||||||
 | 
					     is configured with 'enable-seed'.
 | 
				
			||||||
 | 
					     [KISA, Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Mitigate branch prediction attacks, which can be practical if a
 | 
				
			||||||
 | 
					     single processor is shared, allowing a spy process to extract
 | 
				
			||||||
 | 
					     information.  For detailed background information, see
 | 
				
			||||||
 | 
					     http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
 | 
				
			||||||
 | 
					     J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
 | 
				
			||||||
 | 
					     and Necessary Software Countermeasures").  The core of the change
 | 
				
			||||||
 | 
					     are new versions BN_div_no_branch() and
 | 
				
			||||||
 | 
					     BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
 | 
				
			||||||
 | 
					     respectively, which are slower, but avoid the security-relevant
 | 
				
			||||||
 | 
					     conditional branches.  These are automatically called by BN_div()
 | 
				
			||||||
 | 
					     and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
 | 
				
			||||||
 | 
					     of the input BIGNUMs.  Also, BN_is_bit_set() has been changed to
 | 
				
			||||||
 | 
					     remove a conditional branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     BN_FLG_CONSTTIME is the new name for the previous
 | 
				
			||||||
 | 
					     BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
 | 
				
			||||||
 | 
					     modular exponentiation.  (Since OpenSSL 0.9.7h, setting this flag
 | 
				
			||||||
 | 
					     in the exponent causes BN_mod_exp_mont() to use the alternative
 | 
				
			||||||
 | 
					     implementation in BN_mod_exp_mont_consttime().)  The old name
 | 
				
			||||||
 | 
					     remains as a deprecated alias.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
 | 
				
			||||||
 | 
					     RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
 | 
				
			||||||
 | 
					     constant-time implementations for more than just exponentiation.
 | 
				
			||||||
 | 
					     Here too the old name is kept as a deprecated alias.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     BN_BLINDING_new() will now use BN_dup() for the modulus so that
 | 
				
			||||||
 | 
					     the BN_BLINDING structure gets an independent copy of the
 | 
				
			||||||
 | 
					     modulus.  This means that the previous "BIGNUM *m" argument to
 | 
				
			||||||
 | 
					     BN_BLINDING_new() and to BN_BLINDING_create_param() now
 | 
				
			||||||
 | 
					     essentially becomes "const BIGNUM *m", although we can't actually
 | 
				
			||||||
 | 
					     change this in the header file before 0.9.9.  It allows
 | 
				
			||||||
 | 
					     RSA_setup_blinding() to use BN_with_flags() on the modulus to
 | 
				
			||||||
 | 
					     enable BN_FLG_CONSTTIME.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Matthew D Wood (Intel Corp)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) In the SSL/TLS server implementation, be strict about session ID
 | 
					  *) In the SSL/TLS server implementation, be strict about session ID
 | 
				
			||||||
     context matching (which matters if an application uses a single
 | 
					     context matching (which matters if an application uses a single
 | 
				
			||||||
@@ -20,6 +489,10 @@
 | 
				
			|||||||
     authentication-only ciphersuites.
 | 
					     authentication-only ciphersuites.
 | 
				
			||||||
     [Bodo Moeller]
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
 | 
				
			||||||
 | 
					     not complete and could lead to a possible single byte overflow
 | 
				
			||||||
 | 
					     (CVE-2007-5135) [Ben Laurie]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
 | 
					 Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Since AES128 and AES256 (and similarly Camellia128 and
 | 
					  *) Since AES128 and AES256 (and similarly Camellia128 and
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										320
									
								
								Configure
									
									
									
									
									
								
							
							
						
						
									
										320
									
								
								Configure
									
									
									
									
									
								
							@@ -6,7 +6,9 @@ eval 'exec perl -S $0 ${1+"$@"}'
 | 
				
			|||||||
##
 | 
					##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require 5.000;
 | 
					require 5.000;
 | 
				
			||||||
use strict;
 | 
					eval 'use strict;';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print STDERR "Warning: perl module strict not found.\n" if ($@);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# see INSTALL for instructions.
 | 
					# see INSTALL for instructions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -114,15 +116,17 @@ my $tlib="-lnsl -lsocket";
 | 
				
			|||||||
my $bits1="THIRTY_TWO_BIT ";
 | 
					my $bits1="THIRTY_TWO_BIT ";
 | 
				
			||||||
my $bits2="SIXTY_FOUR_BIT ";
 | 
					my $bits2="SIXTY_FOUR_BIT ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o:rm86-elf.o:r586-elf.o";
 | 
					my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o mo86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o rc4_skey.o:rm86-elf.o:r586-elf.o";
 | 
				
			||||||
my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o:rm86-cof.o:r586-cof.o";
 | 
					my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o mo86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o rc4_skey.o:rm86-cof.o:r586-cof.o";
 | 
				
			||||||
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o:rm86-out.o:r586-out.o";
 | 
					my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o mo86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o rc4_skey.o:rm86-out.o:r586-out.o";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o::::md5-x86_64.o:::rc4-x86_64.o::";
 | 
					my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::";
 | 
				
			||||||
my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o::";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_asm="::::::::::";
 | 
					my $no_asm="::::::::::";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::";
 | 
				
			||||||
 | 
					my $s390x_asm=$no_asm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# As for $BSDthreads. Idea is to maintain "collective" set of flags,
 | 
					# As for $BSDthreads. Idea is to maintain "collective" set of flags,
 | 
				
			||||||
# which would cover all BSD flavors. -pthread applies to them all, 
 | 
					# which would cover all BSD flavors. -pthread applies to them all, 
 | 
				
			||||||
# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
 | 
					# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
 | 
				
			||||||
@@ -155,8 +159,10 @@ my %table=(
 | 
				
			|||||||
"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
 | 
					"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
 | 
				
			||||||
"debug-bodo",	"gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
 | 
					"debug-bodo",	"gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
 | 
				
			||||||
"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
 | 
					"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
 | 
				
			||||||
"debug-steve",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -march=i486 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
 | 
					"debug-steve64", "gcc:-m64 -DL_ENDIAN -DTERMIO -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wall -Werror -Wno-long-long -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-steve-linux-pseudo64",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
 | 
					"debug-steve32", "gcc:-m32 -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"debug-steve",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
 | 
				
			||||||
 | 
					"debug-steve-opt",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -O3 -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
 | 
				
			||||||
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
@@ -199,25 +205,25 @@ my %table=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### SPARC Solaris with GNU C setups
 | 
					#### SPARC Solaris with GNU C setups
 | 
				
			||||||
"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
 | 
					# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
 | 
				
			||||||
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
####
 | 
					####
 | 
				
			||||||
"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### SPARC Solaris with Sun C setups
 | 
					#### SPARC Solaris with Sun C setups
 | 
				
			||||||
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
 | 
					# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
 | 
				
			||||||
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
 | 
					# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
 | 
				
			||||||
# SC5.0 note: Compiler common patch 107357-01 or later is required!
 | 
					# SC5.0 note: Compiler common patch 107357-01 or later is required!
 | 
				
			||||||
"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
 | 
					"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
 | 
				
			||||||
####
 | 
					####
 | 
				
			||||||
"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
 | 
					"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### SunOS configs, assuming sparc for the gcc one.
 | 
					#### SunOS configs, assuming sparc for the gcc one.
 | 
				
			||||||
#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
 | 
					#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
 | 
				
			||||||
@@ -230,11 +236,11 @@ my %table=(
 | 
				
			|||||||
#### IRIX 6.x configs
 | 
					#### IRIX 6.x configs
 | 
				
			||||||
# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
 | 
					# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
 | 
				
			||||||
# './Configure irix-cc -o32' manually.
 | 
					# './Configure irix-cc -o32' manually.
 | 
				
			||||||
"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${no_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${no_asm}:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
# N64 ABI builds.
 | 
					# N64 ABI builds.
 | 
				
			||||||
"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${no_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${no_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Unified HP-UX ANSI C configs.
 | 
					#### Unified HP-UX ANSI C configs.
 | 
				
			||||||
# Special notes:
 | 
					# Special notes:
 | 
				
			||||||
@@ -267,8 +273,8 @@ my %table=(
 | 
				
			|||||||
# Since there is mention of this in shlib/hpux10-cc.sh
 | 
					# Since there is mention of this in shlib/hpux10-cc.sh
 | 
				
			||||||
"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# More attempts at unified 10.X and 11.X targets for HP C compiler.
 | 
					# More attempts at unified 10.X and 11.X targets for HP C compiler.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -276,8 +282,8 @@ my %table=(
 | 
				
			|||||||
# Kevin Steves <ks@hp.se>
 | 
					# Kevin Steves <ks@hp.se>
 | 
				
			||||||
"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# HP/UX IA-64 targets
 | 
					# HP/UX IA-64 targets
 | 
				
			||||||
"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
@@ -314,27 +320,28 @@ my %table=(
 | 
				
			|||||||
# *-generic* is endian-neutral target, but ./config is free to
 | 
					# *-generic* is endian-neutral target, but ./config is free to
 | 
				
			||||||
# throw in -D[BL]_ENDIAN, whichever appropriate...
 | 
					# throw in -D[BL]_ENDIAN, whichever appropriate...
 | 
				
			||||||
"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-ppc",	"gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ppc",	"gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
#### IA-32 targets...
 | 
					#### IA-32 targets...
 | 
				
			||||||
"linux-ia32-icc",	"icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ia32-icc",	"icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-elf",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-elf",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-aout",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
 | 
					"linux-aout",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
 | 
				
			||||||
####
 | 
					####
 | 
				
			||||||
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-ppc64",	"gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ppc64",	"gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-ia64",	"gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ia64",	"gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"linux-x86_64",	"gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-x86_64",	"gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"linux-s390x",  "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
#### SPARC Linux setups
 | 
					#### SPARC Linux setups
 | 
				
			||||||
# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
 | 
					# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
 | 
				
			||||||
# assisted with debugging of following two configs.
 | 
					# assisted with debugging of following two configs.
 | 
				
			||||||
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
# it's a real mess with -mcpu=ultrasparc option under Linux, but
 | 
					# it's a real mess with -mcpu=ultrasparc option under Linux, but
 | 
				
			||||||
# -Wa,-Av8plus should do the trick no matter what.
 | 
					# -Wa,-Av8plus should do the trick no matter what.
 | 
				
			||||||
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
# GCC 3.1 is a requirement
 | 
					# GCC 3.1 is a requirement
 | 
				
			||||||
"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
#### Alpha Linux with GNU C and Compaq C setups
 | 
					#### Alpha Linux with GNU C and Compaq C setups
 | 
				
			||||||
# Special notes:
 | 
					# Special notes:
 | 
				
			||||||
# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
 | 
					# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
 | 
				
			||||||
@@ -358,13 +365,13 @@ my %table=(
 | 
				
			|||||||
"BSD-x86",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-x86",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"BSD-sparcv8",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-sparcv8",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
 | 
					# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
 | 
				
			||||||
# simply *happens* to work around a compiler bug in gcc 3.3.3,
 | 
					# simply *happens* to work around a compiler bug in gcc 3.3.3,
 | 
				
			||||||
# triggered by RIPEMD160 code.
 | 
					# triggered by RIPEMD160 code.
 | 
				
			||||||
"BSD-sparc64",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::md5-sparcv9.o::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-sparc64",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"BSD-ia64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-ia64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"BSD-x86_64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"BSD-x86_64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -402,12 +409,12 @@ my %table=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### IBM's AIX.
 | 
					#### IBM's AIX.
 | 
				
			||||||
"aix3-cc",  "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
 | 
					"aix3-cc",  "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
 | 
				
			||||||
"aix-gcc",  "gcc:-O -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:",
 | 
					"aix-gcc",  "gcc:-O -DB_ENDIAN::-D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:${no_asm}:dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
				
			||||||
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn::::::-X64",
 | 
					"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-maix64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
 | 
				
			||||||
# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
 | 
					# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
 | 
				
			||||||
# at build time. $OBJECT_MODE is respected at ./config stage!
 | 
					# at build time. $OBJECT_MODE is respected at ./config stage!
 | 
				
			||||||
"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
					"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
				
			||||||
"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
 | 
					"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-q64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Cray T90 and similar (SDSC)
 | 
					# Cray T90 and similar (SDSC)
 | 
				
			||||||
@@ -499,9 +506,9 @@ my %table=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
##### MacOS X (a.k.a. Rhapsody or Darwin) setup
 | 
					##### MacOS X (a.k.a. Rhapsody or Darwin) setup
 | 
				
			||||||
"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
 | 
					"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
 | 
				
			||||||
"darwin-ppc-cc","cc:-O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"darwin-ppc-cc","cc:-O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### A/UX
 | 
					##### A/UX
 | 
				
			||||||
"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
 | 
					"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
 | 
				
			||||||
@@ -562,6 +569,11 @@ my $prefix="";
 | 
				
			|||||||
my $openssldir="";
 | 
					my $openssldir="";
 | 
				
			||||||
my $exe_ext="";
 | 
					my $exe_ext="";
 | 
				
			||||||
my $install_prefix="";
 | 
					my $install_prefix="";
 | 
				
			||||||
 | 
					my $fipslibdir="/usr/local/ssl/fips-1.0/lib/";
 | 
				
			||||||
 | 
					my $nofipscanistercheck=0;
 | 
				
			||||||
 | 
					my $fipsdso=0;
 | 
				
			||||||
 | 
					my $fipscanisterinternal="n";
 | 
				
			||||||
 | 
					my $baseaddr="0xFB00000";
 | 
				
			||||||
my $no_threads=0;
 | 
					my $no_threads=0;
 | 
				
			||||||
my $threads=0;
 | 
					my $threads=0;
 | 
				
			||||||
my $no_shared=0; # but "no-shared" is default
 | 
					my $no_shared=0; # but "no-shared" is default
 | 
				
			||||||
@@ -584,10 +596,11 @@ my $rc2	="crypto/rc2/rc2.h";
 | 
				
			|||||||
my $bf	="crypto/bf/bf_locl.h";
 | 
					my $bf	="crypto/bf/bf_locl.h";
 | 
				
			||||||
my $bn_asm	="bn_asm.o";
 | 
					my $bn_asm	="bn_asm.o";
 | 
				
			||||||
my $des_enc="des_enc.o fcrypt_b.o";
 | 
					my $des_enc="des_enc.o fcrypt_b.o";
 | 
				
			||||||
 | 
					my $fips_des_enc="fips_des_enc.o";
 | 
				
			||||||
my $aes_enc="aes_core.o aes_cbc.o";
 | 
					my $aes_enc="aes_core.o aes_cbc.o";
 | 
				
			||||||
my $bf_enc	="bf_enc.o";
 | 
					my $bf_enc	="bf_enc.o";
 | 
				
			||||||
my $cast_enc="c_enc.o";
 | 
					my $cast_enc="c_enc.o";
 | 
				
			||||||
my $rc4_enc="rc4_enc.o";
 | 
					my $rc4_enc="rc4_enc.o rc4_skey.o";
 | 
				
			||||||
my $rc5_enc="rc5_enc.o";
 | 
					my $rc5_enc="rc5_enc.o";
 | 
				
			||||||
my $md5_obj="";
 | 
					my $md5_obj="";
 | 
				
			||||||
my $sha1_obj="";
 | 
					my $sha1_obj="";
 | 
				
			||||||
@@ -595,17 +608,22 @@ my $rmd160_obj="";
 | 
				
			|||||||
my $processor="";
 | 
					my $processor="";
 | 
				
			||||||
my $default_ranlib;
 | 
					my $default_ranlib;
 | 
				
			||||||
my $perl;
 | 
					my $perl;
 | 
				
			||||||
 | 
					my $fips=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# All of the following is disabled by default (RC5 was enabled before 0.9.8):
 | 
					# All of the following is disabled by default (RC5 was enabled before 0.9.8):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my %disabled = ( # "what"         => "comment"
 | 
					my %disabled = ( # "what"         => "comment"
 | 
				
			||||||
		 "camellia"	  => "default",
 | 
					                 "camellia"       => "default",
 | 
				
			||||||
		 "gmp"		  => "default",
 | 
					                 "capieng"        => "default",
 | 
				
			||||||
 | 
					                 "cms"            => "default",
 | 
				
			||||||
 | 
					                 "gmp"            => "default",
 | 
				
			||||||
                 "mdc2"           => "default",
 | 
					                 "mdc2"           => "default",
 | 
				
			||||||
                 "rc5"            => "default",
 | 
					                 "rc5"            => "default",
 | 
				
			||||||
		 "rfc3779"	  => "default",
 | 
					                 "rfc3779"        => "default",
 | 
				
			||||||
 | 
					                 "seed"           => "default",
 | 
				
			||||||
                 "shared"         => "default",
 | 
					                 "shared"         => "default",
 | 
				
			||||||
 | 
					                 "tlsext"         => "default",
 | 
				
			||||||
                 "zlib"           => "default",
 | 
					                 "zlib"           => "default",
 | 
				
			||||||
                 "zlib-dynamic"   => "default"
 | 
					                 "zlib-dynamic"   => "default"
 | 
				
			||||||
               );
 | 
					               );
 | 
				
			||||||
@@ -615,7 +633,7 @@ my %disabled = ( # "what"         => "comment"
 | 
				
			|||||||
# For symmetry, "disable-..." is a synonym for "no-...".
 | 
					# For symmetry, "disable-..." is a synonym for "no-...".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This is what $depflags will look like with the above default:
 | 
					# This is what $depflags will look like with the above default:
 | 
				
			||||||
my $default_depflags = "-DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 ";
 | 
					my $default_depflags = "-DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED -DOPENSSL_NO_TLSEXT ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_sse2=0;
 | 
					my $no_sse2=0;
 | 
				
			||||||
@@ -718,12 +736,36 @@ PROCESS_ARGS:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		elsif (/^386$/)
 | 
							elsif (/^386$/)
 | 
				
			||||||
			{ $processor=386; }
 | 
								{ $processor=386; }
 | 
				
			||||||
 | 
							elsif (/^fips$/)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$fips=1;
 | 
				
			||||||
 | 
							        }
 | 
				
			||||||
		elsif (/^rsaref$/)
 | 
							elsif (/^rsaref$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			# No RSAref support any more since it's not needed.
 | 
								# No RSAref support any more since it's not needed.
 | 
				
			||||||
			# The check for the option is there so scripts aren't
 | 
								# The check for the option is there so scripts aren't
 | 
				
			||||||
			# broken
 | 
								# broken
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							elsif (/^nofipscanistercheck$/)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$fips = 1;
 | 
				
			||||||
 | 
								$nofipscanistercheck = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							elsif (/^fipscanisterbuild$/)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$fips = 1;
 | 
				
			||||||
 | 
								$nofipscanistercheck = 1;
 | 
				
			||||||
 | 
								$fipslibdir="";
 | 
				
			||||||
 | 
								$fipscanisterinternal="y";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							elsif (/^fipsdso$/)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$fips = 1;
 | 
				
			||||||
 | 
								$nofipscanistercheck = 1;
 | 
				
			||||||
 | 
								$fipslibdir="";
 | 
				
			||||||
 | 
								$fipscanisterinternal="y";
 | 
				
			||||||
 | 
								$fipsdso = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		elsif (/^[-+]/)
 | 
							elsif (/^[-+]/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (/^-[lL](.*)$/)
 | 
								if (/^-[lL](.*)$/)
 | 
				
			||||||
@@ -758,6 +800,14 @@ PROCESS_ARGS:
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				$withargs{"zlib-include"}="-I$1";
 | 
									$withargs{"zlib-include"}="-I$1";
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								elsif (/^--with-fipslibdir=(.*)$/)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									$fipslibdir="$1/";
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								elsif (/^--with-baseaddr=(.*)$/)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									$baseaddr="$1";
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				print STDERR $usage;
 | 
									print STDERR $usage;
 | 
				
			||||||
@@ -837,6 +887,10 @@ if (defined($disabled{"md5"}) || defined($disabled{"sha"})
 | 
				
			|||||||
	$disabled{"tls1"} = "forced";
 | 
						$disabled{"tls1"} = "forced";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (defined($disabled{"tls1"}))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$disabled{"tlsext"} = "forced";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($target eq "TABLE") {
 | 
					if ($target eq "TABLE") {
 | 
				
			||||||
	foreach $target (sort keys %table) {
 | 
						foreach $target (sort keys %table) {
 | 
				
			||||||
@@ -861,6 +915,41 @@ print "Configuring for $target\n";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
&usage if (!defined($table{$target}));
 | 
					&usage if (!defined($table{$target}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
				
			||||||
 | 
					my $cc = $fields[$idx_cc];
 | 
				
			||||||
 | 
					my $cflags = $fields[$idx_cflags];
 | 
				
			||||||
 | 
					my $unistd = $fields[$idx_unistd];
 | 
				
			||||||
 | 
					my $thread_cflag = $fields[$idx_thread_cflag];
 | 
				
			||||||
 | 
					my $sys_id = $fields[$idx_sys_id];
 | 
				
			||||||
 | 
					my $lflags = $fields[$idx_lflags];
 | 
				
			||||||
 | 
					my $bn_ops = $fields[$idx_bn_ops];
 | 
				
			||||||
 | 
					my $cpuid_obj = $fields[$idx_cpuid_obj];
 | 
				
			||||||
 | 
					my $bn_obj = $fields[$idx_bn_obj];
 | 
				
			||||||
 | 
					my $des_obj = $fields[$idx_des_obj];
 | 
				
			||||||
 | 
					my $aes_obj = $fields[$idx_aes_obj];
 | 
				
			||||||
 | 
					my $bf_obj = $fields[$idx_bf_obj];
 | 
				
			||||||
 | 
					my $md5_obj = $fields[$idx_md5_obj];
 | 
				
			||||||
 | 
					my $sha1_obj = $fields[$idx_sha1_obj];
 | 
				
			||||||
 | 
					my $cast_obj = $fields[$idx_cast_obj];
 | 
				
			||||||
 | 
					my $rc4_obj = $fields[$idx_rc4_obj];
 | 
				
			||||||
 | 
					my $rmd160_obj = $fields[$idx_rmd160_obj];
 | 
				
			||||||
 | 
					my $rc5_obj = $fields[$idx_rc5_obj];
 | 
				
			||||||
 | 
					my $dso_scheme = $fields[$idx_dso_scheme];
 | 
				
			||||||
 | 
					my $shared_target = $fields[$idx_shared_target];
 | 
				
			||||||
 | 
					my $shared_cflag = $fields[$idx_shared_cflag];
 | 
				
			||||||
 | 
					my $shared_ldflag = $fields[$idx_shared_ldflag];
 | 
				
			||||||
 | 
					my $shared_extension = $fields[$idx_shared_extension];
 | 
				
			||||||
 | 
					my $ranlib = $fields[$idx_ranlib];
 | 
				
			||||||
 | 
					my $arflags = $fields[$idx_arflags];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($fips)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
 | 
				
			||||||
 | 
						$disabled{"asm"}="forced"
 | 
				
			||||||
 | 
							if ($target !~ "VC\-.*" &&
 | 
				
			||||||
 | 
							    "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foreach (sort (keys %disabled))
 | 
					foreach (sort (keys %disabled))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -922,9 +1011,21 @@ my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
 | 
					$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$no_shared = 0 if ($fipsdso && !$IsMK1MF);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
 | 
					$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
 | 
				
			||||||
$exe_ext=".pm"  if ($target =~ /vos/);
 | 
					$exe_ext=".pm"  if ($target =~ /vos/);
 | 
				
			||||||
$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
 | 
					if ($openssldir eq "" and $prefix eq "")
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						if ($fips)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							$openssldir="/usr/local/ssl/fips";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							$openssldir="/usr/local/ssl";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
$prefix=$openssldir if $prefix eq "";
 | 
					$prefix=$openssldir if $prefix eq "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$default_ranlib= &which("ranlib") or $default_ranlib="true";
 | 
					$default_ranlib= &which("ranlib") or $default_ranlib="true";
 | 
				
			||||||
@@ -940,32 +1041,10 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
print "IsMK1MF=$IsMK1MF\n";
 | 
					print "IsMK1MF=$IsMK1MF\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
					# '%' in $lflags is used to split flags to "pre-" and post-flags
 | 
				
			||||||
my $cc = $fields[$idx_cc];
 | 
					my ($prelflags,$postlflags)=split('%',$lflags);
 | 
				
			||||||
my $cflags = $fields[$idx_cflags];
 | 
					if (defined($postlflags))	{ $lflags=$postlflags;  }
 | 
				
			||||||
my $unistd = $fields[$idx_unistd];
 | 
					else				{ $lflags=$prelflags; undef $prelflags; }
 | 
				
			||||||
my $thread_cflag = $fields[$idx_thread_cflag];
 | 
					 | 
				
			||||||
my $sys_id = $fields[$idx_sys_id];
 | 
					 | 
				
			||||||
my $lflags = $fields[$idx_lflags];
 | 
					 | 
				
			||||||
my $bn_ops = $fields[$idx_bn_ops];
 | 
					 | 
				
			||||||
my $cpuid_obj = $fields[$idx_cpuid_obj];
 | 
					 | 
				
			||||||
my $bn_obj = $fields[$idx_bn_obj];
 | 
					 | 
				
			||||||
my $des_obj = $fields[$idx_des_obj];
 | 
					 | 
				
			||||||
my $aes_obj = $fields[$idx_aes_obj];
 | 
					 | 
				
			||||||
my $bf_obj = $fields[$idx_bf_obj];
 | 
					 | 
				
			||||||
my $md5_obj = $fields[$idx_md5_obj];
 | 
					 | 
				
			||||||
my $sha1_obj = $fields[$idx_sha1_obj];
 | 
					 | 
				
			||||||
my $cast_obj = $fields[$idx_cast_obj];
 | 
					 | 
				
			||||||
my $rc4_obj = $fields[$idx_rc4_obj];
 | 
					 | 
				
			||||||
my $rmd160_obj = $fields[$idx_rmd160_obj];
 | 
					 | 
				
			||||||
my $rc5_obj = $fields[$idx_rc5_obj];
 | 
					 | 
				
			||||||
my $dso_scheme = $fields[$idx_dso_scheme];
 | 
					 | 
				
			||||||
my $shared_target = $fields[$idx_shared_target];
 | 
					 | 
				
			||||||
my $shared_cflag = $fields[$idx_shared_cflag];
 | 
					 | 
				
			||||||
my $shared_ldflag = $fields[$idx_shared_ldflag];
 | 
					 | 
				
			||||||
my $shared_extension = $fields[$idx_shared_extension];
 | 
					 | 
				
			||||||
my $ranlib = $fields[$idx_ranlib];
 | 
					 | 
				
			||||||
my $arflags = $fields[$idx_arflags];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_shared_warn=0;
 | 
					my $no_shared_warn=0;
 | 
				
			||||||
my $no_user_cflags=0;
 | 
					my $no_user_cflags=0;
 | 
				
			||||||
@@ -1095,6 +1174,8 @@ if ($no_asm)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	$cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
 | 
						$cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
 | 
				
			||||||
	$sha1_obj=$md5_obj=$rmd160_obj="";
 | 
						$sha1_obj=$md5_obj=$rmd160_obj="";
 | 
				
			||||||
 | 
						$cflags=~s/\-D[BL]_ENDIAN//		if ($fips);
 | 
				
			||||||
 | 
						$thread_cflags=~s/\-D[BL]_ENDIAN//	if ($fips);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!$no_shared)
 | 
					if (!$no_shared)
 | 
				
			||||||
@@ -1125,7 +1206,7 @@ if ($zlib)
 | 
				
			|||||||
my $shared_mark = "";
 | 
					my $shared_mark = "";
 | 
				
			||||||
if ($shared_target eq "")
 | 
					if ($shared_target eq "")
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	$no_shared_warn = 1 if !$no_shared;
 | 
						$no_shared_warn = 1 if !$no_shared && !$fips;
 | 
				
			||||||
	$no_shared = 1;
 | 
						$no_shared = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
if (!$no_shared)
 | 
					if (!$no_shared)
 | 
				
			||||||
@@ -1149,12 +1230,19 @@ if (!$IsMK1MF)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
 | 
					$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
 | 
				
			||||||
# Compiler fix-ups
 | 
					
 | 
				
			||||||
if ($target =~ /icc$/)
 | 
					#
 | 
				
			||||||
 | 
					# Platform fix-ups
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					if ($target =~ /\-icc$/)	# Intel C compiler
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	my($iccver)=`$cc -V 2>&1`;
 | 
						my $iccver=0;
 | 
				
			||||||
	if ($iccver =~ /Version ([0-9]+)\./)	{ $iccver=$1; }
 | 
						if (open(FD,"$cc -V 2>&1 |"))
 | 
				
			||||||
	else					{ $iccver=0;  }
 | 
							{
 | 
				
			||||||
 | 
							while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
 | 
				
			||||||
 | 
							close(FD);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($iccver>=8)
 | 
						if ($iccver>=8)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		# Eliminate unnecessary dependency from libirc.a. This is
 | 
							# Eliminate unnecessary dependency from libirc.a. This is
 | 
				
			||||||
@@ -1162,6 +1250,28 @@ if ($target =~ /icc$/)
 | 
				
			|||||||
		# apps/openssl can end up in endless loop upon startup...
 | 
							# apps/openssl can end up in endless loop upon startup...
 | 
				
			||||||
		$cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
 | 
							$cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						if ($iccver>=9)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							$cflags.=" -i-static";
 | 
				
			||||||
 | 
							$cflags=~s/\-no_cpprt/-no-cpprt/;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if ($iccver>=10)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							$cflags=~s/\-i\-static/-static-intel/;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
 | 
				
			||||||
 | 
					# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
 | 
				
			||||||
 | 
					# .so objects. Apparently application RPATH is not global and does
 | 
				
			||||||
 | 
					# not apply to .so linked with other .so. Problem manifests itself
 | 
				
			||||||
 | 
					# when libssl.so fails to load libcrypto.so. One can argue that we
 | 
				
			||||||
 | 
					# should engrave this into Makefile.shared rules or into BSD-* config
 | 
				
			||||||
 | 
					# lines above. Meanwhile let's try to be cautious and pass -rpath to
 | 
				
			||||||
 | 
					# linker only when --prefix is not /usr.
 | 
				
			||||||
 | 
					if ($target =~ /^BSD\-/)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($sys_id ne "")
 | 
					if ($sys_id ne "")
 | 
				
			||||||
@@ -1187,6 +1297,13 @@ $bn_obj = $bn_asm unless $bn_obj ne "";
 | 
				
			|||||||
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
 | 
					$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
 | 
				
			||||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
 | 
					$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($fips)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$openssl_other_defines.="#define OPENSSL_FIPS\n";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$des_obj=$des_enc	unless ($des_obj =~ /\.o$/);
 | 
					$des_obj=$des_enc	unless ($des_obj =~ /\.o$/);
 | 
				
			||||||
$bf_obj=$bf_enc		unless ($bf_obj =~ /\.o$/);
 | 
					$bf_obj=$bf_enc		unless ($bf_obj =~ /\.o$/);
 | 
				
			||||||
$cast_obj=$cast_enc	unless ($cast_obj =~ /\.o$/);
 | 
					$cast_obj=$cast_enc	unless ($cast_obj =~ /\.o$/);
 | 
				
			||||||
@@ -1198,7 +1315,7 @@ if ($sha1_obj =~ /\.o$/)
 | 
				
			|||||||
	$cflags.=" -DSHA1_ASM"   if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
 | 
						$cflags.=" -DSHA1_ASM"   if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
 | 
				
			||||||
	$cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
 | 
						$cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
 | 
				
			||||||
	$cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
 | 
						$cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
 | 
				
			||||||
	if ($sha1_obj =~ /x86/)
 | 
						if ($sha1_obj =~ /sse2/)
 | 
				
			||||||
	    {	if ($no_sse2)
 | 
						    {	if ($no_sse2)
 | 
				
			||||||
		{   $sha1_obj =~ s/\S*sse2\S+//;        }
 | 
							{   $sha1_obj =~ s/\S*sse2\S+//;        }
 | 
				
			||||||
		elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
 | 
							elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
 | 
				
			||||||
@@ -1293,6 +1410,7 @@ while (<IN>)
 | 
				
			|||||||
	s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
 | 
						s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
 | 
				
			||||||
	s/^CFLAG=.*$/CFLAG= $cflags/;
 | 
						s/^CFLAG=.*$/CFLAG= $cflags/;
 | 
				
			||||||
	s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
 | 
						s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
 | 
				
			||||||
 | 
						s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
 | 
				
			||||||
	s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
 | 
						s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
 | 
				
			||||||
	s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
 | 
						s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
 | 
				
			||||||
	s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
 | 
						s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
 | 
				
			||||||
@@ -1314,9 +1432,24 @@ while (<IN>)
 | 
				
			|||||||
	s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
 | 
						s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
 | 
				
			||||||
	s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
 | 
						s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
 | 
				
			||||||
	s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
 | 
						s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
 | 
				
			||||||
 | 
						s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
 | 
				
			||||||
 | 
						if ($fipsdso)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							s/^FIPSCANLIB=.*/FIPSCANLIB=libfips/;
 | 
				
			||||||
 | 
							s/^SHARED_FIPS=.*/SHARED_FIPS=libfips\$(SHLIB_EXT)/;
 | 
				
			||||||
 | 
							s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl fips/;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
 | 
				
			||||||
 | 
							s/^SHARED_FIPS=.*/SHARED_FIPS=/;
 | 
				
			||||||
 | 
							s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
 | 
				
			||||||
 | 
						s/^BASEADDR=.*/BASEADDR=$baseaddr/;
 | 
				
			||||||
	s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
 | 
						s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
 | 
				
			||||||
	s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
 | 
						s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
 | 
				
			||||||
	s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
 | 
						s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
 | 
				
			||||||
	if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
 | 
						if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		my $sotmp = $1;
 | 
							my $sotmp = $1;
 | 
				
			||||||
@@ -1611,9 +1744,16 @@ BEGIN
 | 
				
			|||||||
    BEGIN
 | 
					    BEGIN
 | 
				
			||||||
	BLOCK "040904b0"
 | 
						BLOCK "040904b0"
 | 
				
			||||||
	BEGIN
 | 
						BEGIN
 | 
				
			||||||
 | 
					#if defined(FIPS)
 | 
				
			||||||
 | 
						    VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	    // Required:	    
 | 
						    // Required:	    
 | 
				
			||||||
	    VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
 | 
						    VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
 | 
				
			||||||
 | 
					#if defined(FIPS)
 | 
				
			||||||
 | 
						    VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
	    VALUE "FileDescription", "OpenSSL Shared Library\\0"
 | 
						    VALUE "FileDescription", "OpenSSL Shared Library\\0"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	    VALUE "FileVersion", "$version\\0"
 | 
						    VALUE "FileVersion", "$version\\0"
 | 
				
			||||||
#if defined(CRYPTO)
 | 
					#if defined(CRYPTO)
 | 
				
			||||||
	    VALUE "InternalName", "libeay32\\0"
 | 
						    VALUE "InternalName", "libeay32\\0"
 | 
				
			||||||
@@ -1621,12 +1761,15 @@ BEGIN
 | 
				
			|||||||
#elif defined(SSL)
 | 
					#elif defined(SSL)
 | 
				
			||||||
	    VALUE "InternalName", "ssleay32\\0"
 | 
						    VALUE "InternalName", "ssleay32\\0"
 | 
				
			||||||
	    VALUE "OriginalFilename", "ssleay32.dll\\0"
 | 
						    VALUE "OriginalFilename", "ssleay32.dll\\0"
 | 
				
			||||||
 | 
					#elif defined(FIPS)
 | 
				
			||||||
 | 
						    VALUE "InternalName", "libosslfips\\0"
 | 
				
			||||||
 | 
						    VALUE "OriginalFilename", "libosslfips.dll\\0"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	    VALUE "ProductName", "The OpenSSL Toolkit\\0"
 | 
						    VALUE "ProductName", "The OpenSSL Toolkit\\0"
 | 
				
			||||||
	    VALUE "ProductVersion", "$version\\0"
 | 
						    VALUE "ProductVersion", "$version\\0"
 | 
				
			||||||
	    // Optional:
 | 
						    // Optional:
 | 
				
			||||||
	    //VALUE "Comments", "\\0"
 | 
						    //VALUE "Comments", "\\0"
 | 
				
			||||||
	    VALUE "LegalCopyright", "Copyright <20> 1998-2005 The OpenSSL Project. Copyright <20> 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
 | 
						    VALUE "LegalCopyright", "Copyright <20> 1998-2007 The OpenSSL Project. Copyright <20> 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
 | 
				
			||||||
	    //VALUE "LegalTrademarks", "\\0"
 | 
						    //VALUE "LegalTrademarks", "\\0"
 | 
				
			||||||
	    //VALUE "PrivateBuild", "\\0"
 | 
						    //VALUE "PrivateBuild", "\\0"
 | 
				
			||||||
	    //VALUE "SpecialBuild", "\\0"
 | 
						    //VALUE "SpecialBuild", "\\0"
 | 
				
			||||||
@@ -1663,6 +1806,21 @@ libraries on this platform, they will at least look at it and try their best
 | 
				
			|||||||
(but please first make sure you have tried with a current version of OpenSSL).
 | 
					(but please first make sure you have tried with a current version of OpenSSL).
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print <<\EOF if ($fipscanisterinternal eq "y");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WARNING: OpenSSL has been configured using unsupported option(s) to internally
 | 
				
			||||||
 | 
					generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
 | 
				
			||||||
 | 
					compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
 | 
				
			||||||
 | 
					OpenSSL FIPS Object Module as identified by the CMVP
 | 
				
			||||||
 | 
					(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
 | 
				
			||||||
 | 
					140-2 validated software. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is an OpenSSL 0.9.8-fips test version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See the file README.FIPS for details of how to build a test library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exit(0);
 | 
					exit(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub usage
 | 
					sub usage
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										157
									
								
								Makefile.org
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								Makefile.org
									
									
									
									
									
								
							@@ -65,6 +65,7 @@ EX_LIBS=
 | 
				
			|||||||
EXE_EXT= 
 | 
					EXE_EXT= 
 | 
				
			||||||
ARFLAGS=
 | 
					ARFLAGS=
 | 
				
			||||||
AR=ar $(ARFLAGS) r
 | 
					AR=ar $(ARFLAGS) r
 | 
				
			||||||
 | 
					ARD=ar $(ARFLAGS) d
 | 
				
			||||||
RANLIB= ranlib
 | 
					RANLIB= ranlib
 | 
				
			||||||
PERL= perl
 | 
					PERL= perl
 | 
				
			||||||
TAR= tar
 | 
					TAR= tar
 | 
				
			||||||
@@ -104,18 +105,44 @@ LIBKRB5=
 | 
				
			|||||||
ZLIB_INCLUDE=
 | 
					ZLIB_INCLUDE=
 | 
				
			||||||
LIBZLIB=
 | 
					LIBZLIB=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DIRS=   crypto ssl engines apps test tools
 | 
					# This is the location of fipscanister.o and friends.
 | 
				
			||||||
SHLIBDIRS= crypto ssl
 | 
					# The FIPS module build will place it $(INSTALLTOP)/lib
 | 
				
			||||||
 | 
					# but since $(INSTALLTOP) can only take the default value
 | 
				
			||||||
 | 
					# when the module is built it will be in /usr/local/ssl/lib
 | 
				
			||||||
 | 
					# $(INSTALLTOP) for this build make be different so hard
 | 
				
			||||||
 | 
					# code the path.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FIPSLIBDIR=/usr/local/ssl/lib/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This is set to "y" if fipscanister.o is compiled internally as
 | 
				
			||||||
 | 
					# opposed to coming from an external validated location.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FIPSCANISTERINTERNAL=n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The location of the library which contains fipscanister.o
 | 
				
			||||||
 | 
					# normally it will be libcrypto unless fipsdso is set in which
 | 
				
			||||||
 | 
					# case it will be libfips. If not compiling in FIPS mode at all
 | 
				
			||||||
 | 
					# this is empty making it a useful test for a FIPS compile.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FIPSCANLIB=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Shared library base address. Currently only used on Windows.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEADDR=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DIRS=   crypto fips ssl engines apps test tools
 | 
				
			||||||
 | 
					SHLIBDIRS= crypto ssl fips
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# dirs in crypto to build
 | 
					# dirs in crypto to build
 | 
				
			||||||
SDIRS=  \
 | 
					SDIRS=  \
 | 
				
			||||||
	objects \
 | 
						objects \
 | 
				
			||||||
	md2 md4 md5 sha mdc2 hmac ripemd \
 | 
						md2 md4 md5 sha mdc2 hmac ripemd \
 | 
				
			||||||
	des aes rc2 rc4 rc5 idea bf cast camellia \
 | 
						des aes rc2 rc4 rc5 idea bf cast camellia seed \
 | 
				
			||||||
	bn ec rsa dsa ecdsa dh ecdh dso engine \
 | 
						bn ec rsa dsa ecdsa dh ecdh dso engine \
 | 
				
			||||||
	buffer bio stack lhash rand err \
 | 
						buffer bio stack lhash rand err \
 | 
				
			||||||
	evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
 | 
						evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
 | 
				
			||||||
	store pqueue
 | 
						store cms pqueue
 | 
				
			||||||
# keep in mind that the above list is adjusted by ./Configure
 | 
					# keep in mind that the above list is adjusted by ./Configure
 | 
				
			||||||
# according to no-xxx arguments...
 | 
					# according to no-xxx arguments...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -138,13 +165,14 @@ WDIRS=  windows
 | 
				
			|||||||
LIBS=   libcrypto.a libssl.a
 | 
					LIBS=   libcrypto.a libssl.a
 | 
				
			||||||
SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
 | 
					SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
 | 
				
			||||||
SHARED_SSL=libssl$(SHLIB_EXT)
 | 
					SHARED_SSL=libssl$(SHLIB_EXT)
 | 
				
			||||||
 | 
					SHARED_FIPS=
 | 
				
			||||||
SHARED_LIBS=
 | 
					SHARED_LIBS=
 | 
				
			||||||
SHARED_LIBS_LINK_EXTS=
 | 
					SHARED_LIBS_LINK_EXTS=
 | 
				
			||||||
SHARED_LDFLAGS=
 | 
					SHARED_LDFLAGS=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GENERAL=        Makefile
 | 
					GENERAL=        Makefile
 | 
				
			||||||
BASENAME=       openssl
 | 
					BASENAME=       openssl
 | 
				
			||||||
NAME=           $(BASENAME)-$(VERSION)
 | 
					NAME=           $(BASENAME)-fips-$(VERSION)
 | 
				
			||||||
TARFILE=        $(NAME).tar
 | 
					TARFILE=        $(NAME).tar
 | 
				
			||||||
WTARFILE=       $(NAME)-win.tar
 | 
					WTARFILE=       $(NAME)-win.tar
 | 
				
			||||||
EXHEADER=       e_os2.h
 | 
					EXHEADER=       e_os2.h
 | 
				
			||||||
@@ -191,6 +219,9 @@ BUILDENV=	PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
 | 
				
			|||||||
		SHA1_ASM_OBJ='${SHA1_ASM_OBJ}'			\
 | 
							SHA1_ASM_OBJ='${SHA1_ASM_OBJ}'			\
 | 
				
			||||||
		MD5_ASM_OBJ='${MD5_ASM_OBJ}'			\
 | 
							MD5_ASM_OBJ='${MD5_ASM_OBJ}'			\
 | 
				
			||||||
		RMD160_ASM_OBJ='${RMD160_ASM_OBJ}'		\
 | 
							RMD160_ASM_OBJ='${RMD160_ASM_OBJ}'		\
 | 
				
			||||||
 | 
							FIPSLIBDIR='${FIPSLIBDIR}' FIPSCANLIB='${FIPSCANLIB}' \
 | 
				
			||||||
 | 
							FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}'	\
 | 
				
			||||||
 | 
							FIPS_EX_OBJ='${FIPS_EX_OBJ}'	\
 | 
				
			||||||
		THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
 | 
							THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
 | 
				
			||||||
# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
 | 
					# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
 | 
				
			||||||
# which in turn eliminates ambiguities in variable treatment with -e.
 | 
					# which in turn eliminates ambiguities in variable treatment with -e.
 | 
				
			||||||
@@ -222,13 +253,84 @@ BUILD_ONE_CMD=\
 | 
				
			|||||||
reflect:
 | 
					reflect:
 | 
				
			||||||
	@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
 | 
						@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
 | 
				
			||||||
 | 
						../crypto/aes/aes_ecb.o \
 | 
				
			||||||
 | 
						../crypto/aes/aes_ofb.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_add.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_blind.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_ctx.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_div.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_exp2.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_exp.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_gcd.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_lib.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_mod.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_mont.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_mul.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_prime.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_rand.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_recp.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_shift.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_sqr.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_word.o \
 | 
				
			||||||
 | 
						../crypto/bn/bn_x931p.o \
 | 
				
			||||||
 | 
						../crypto/buffer/buf_str.o \
 | 
				
			||||||
 | 
						../crypto/cryptlib.o \
 | 
				
			||||||
 | 
						../crypto/des/cfb64ede.o \
 | 
				
			||||||
 | 
						../crypto/des/cfb64enc.o \
 | 
				
			||||||
 | 
						../crypto/des/cfb_enc.o \
 | 
				
			||||||
 | 
						../crypto/des/ecb3_enc.o \
 | 
				
			||||||
 | 
						../crypto/des/ecb_enc.o \
 | 
				
			||||||
 | 
						../crypto/des/ofb64ede.o \
 | 
				
			||||||
 | 
						../crypto/des/ofb64enc.o \
 | 
				
			||||||
 | 
						../crypto/des/fcrypt.o \
 | 
				
			||||||
 | 
						../crypto/des/set_key.o \
 | 
				
			||||||
 | 
						../crypto/dsa/dsa_utl.o \
 | 
				
			||||||
 | 
						../crypto/dsa/dsa_sign.o \
 | 
				
			||||||
 | 
						../crypto/dsa/dsa_vrf.o \
 | 
				
			||||||
 | 
						../crypto/err/err.o \
 | 
				
			||||||
 | 
						../crypto/evp/digest.o \
 | 
				
			||||||
 | 
						../crypto/evp/enc_min.o \
 | 
				
			||||||
 | 
						../crypto/evp/e_aes.o \
 | 
				
			||||||
 | 
						../crypto/evp/e_des3.o \
 | 
				
			||||||
 | 
						../crypto/evp/p_sign.o \
 | 
				
			||||||
 | 
						../crypto/evp/p_verify.o \
 | 
				
			||||||
 | 
						../crypto/mem_clr.o \
 | 
				
			||||||
 | 
						../crypto/mem.o \
 | 
				
			||||||
 | 
						../crypto/rand/md_rand.o \
 | 
				
			||||||
 | 
						../crypto/rand/rand_egd.o \
 | 
				
			||||||
 | 
						../crypto/rand/randfile.o \
 | 
				
			||||||
 | 
						../crypto/rand/rand_lib.o \
 | 
				
			||||||
 | 
						../crypto/rand/rand_os2.o \
 | 
				
			||||||
 | 
						../crypto/rand/rand_unix.o \
 | 
				
			||||||
 | 
						../crypto/rand/rand_win.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_lib.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_none.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_oaep.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_pk1.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_pss.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_ssl.o \
 | 
				
			||||||
 | 
						../crypto/rsa/rsa_x931.o \
 | 
				
			||||||
 | 
						../crypto/sha/sha1dgst.o \
 | 
				
			||||||
 | 
						../crypto/sha/sha256.o \
 | 
				
			||||||
 | 
						../crypto/sha/sha512.o \
 | 
				
			||||||
 | 
						../crypto/uid.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub_all: build_all
 | 
					sub_all: build_all
 | 
				
			||||||
build_all: build_libs build_apps build_tests build_tools
 | 
					build_all: build_libs build_apps build_tests build_tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build_libs: build_crypto build_ssl build_engines
 | 
					build_libs: build_crypto build_fips build_ssl build_shared build_engines
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build_crypto:
 | 
					build_crypto:
 | 
				
			||||||
	@dir=crypto; target=all; $(BUILD_ONE_CMD)
 | 
						if [ -n "$(FIPSCANLIB)" ]; then \
 | 
				
			||||||
 | 
							EXCL_OBJ='$(AES_ASM_OBJ) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \
 | 
				
			||||||
 | 
							ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \
 | 
				
			||||||
 | 
						else \
 | 
				
			||||||
 | 
							ARX='${AR}' ; \
 | 
				
			||||||
 | 
						fi ; export ARX ; \
 | 
				
			||||||
 | 
							dir=crypto; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
 | 
					build_fips:
 | 
				
			||||||
 | 
						@dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
 | 
				
			||||||
build_ssl:
 | 
					build_ssl:
 | 
				
			||||||
	@dir=ssl; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=ssl; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_engines:
 | 
					build_engines:
 | 
				
			||||||
@@ -244,9 +346,20 @@ all_testapps: build_libs build_testapps
 | 
				
			|||||||
build_testapps:
 | 
					build_testapps:
 | 
				
			||||||
	@dir=crypto; target=testapps; $(BUILD_ONE_CMD)
 | 
						@dir=crypto; target=testapps; $(BUILD_ONE_CMD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libcrypto$(SHLIB_EXT): libcrypto.a
 | 
					build_shared:	$(SHARED_LIBS)
 | 
				
			||||||
 | 
					libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
 | 
				
			||||||
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
						@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
				
			||||||
		$(MAKE) SHLIBDIRS=crypto build-shared; \
 | 
							if [ "$(FIPSCANLIB)" = "libfips" ]; then \
 | 
				
			||||||
 | 
								$(ARD) libcrypto.a fipscanister.o ; \
 | 
				
			||||||
 | 
								$(MAKE) SHLIBDIRS='crypto' SHLIBDEPS='-lfips' build-shared; \
 | 
				
			||||||
 | 
								$(AR) libcrypto.a fips/fipscanister.o ; \
 | 
				
			||||||
 | 
							else \
 | 
				
			||||||
 | 
								if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
 | 
				
			||||||
 | 
									FIPSLD_CC=$(CC); CC=fips/fipsld; \
 | 
				
			||||||
 | 
									export CC FIPSLD_CC; \
 | 
				
			||||||
 | 
								fi; \
 | 
				
			||||||
 | 
								$(MAKE) -e SHLIBDIRS='crypto' build-shared; \
 | 
				
			||||||
 | 
							fi \
 | 
				
			||||||
	else \
 | 
						else \
 | 
				
			||||||
		echo "There's no support for shared libraries on this platform" >&2; \
 | 
							echo "There's no support for shared libraries on this platform" >&2; \
 | 
				
			||||||
		exit 1; \
 | 
							exit 1; \
 | 
				
			||||||
@@ -254,12 +367,32 @@ libcrypto$(SHLIB_EXT): libcrypto.a
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
 | 
					libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
 | 
				
			||||||
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
						@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
				
			||||||
		$(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
 | 
							shlibdeps=-lcrypto; \
 | 
				
			||||||
 | 
							[ "$(FIPSCANLIB)" = "libfips" ] && shlibdeps="$$shlibdeps -lfips"; \
 | 
				
			||||||
 | 
							$(MAKE) SHLIBDIRS=ssl SHLIBDEPS="$$shlibdeps" build-shared; \
 | 
				
			||||||
 | 
						else \
 | 
				
			||||||
 | 
							echo "There's no support for shared libraries on this platform" >&2 ; \
 | 
				
			||||||
 | 
							exit 1; \
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fips/fipscanister.o:	build_fips
 | 
				
			||||||
 | 
					libfips$(SHLIB_EXT):		fips/fipscanister.o
 | 
				
			||||||
 | 
						@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
				
			||||||
 | 
							FIPSLD_CC=$(CC); CC=fips/fipsld; export CC FIPSLD_CC; \
 | 
				
			||||||
 | 
							$(MAKE) -f Makefile.shared -e $(BUILDENV) \
 | 
				
			||||||
 | 
								CC=$${CC} LIBNAME=fips THIS=$@ \
 | 
				
			||||||
 | 
								LIBEXTRAS=fips/fipscanister.o \
 | 
				
			||||||
 | 
								LIBDEPS="$(EX_LIBS)" \
 | 
				
			||||||
 | 
								LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
 | 
				
			||||||
 | 
								link_o.$(SHLIB_TARGET) || { rm -f $@; exit 1; } \
 | 
				
			||||||
	else \
 | 
						else \
 | 
				
			||||||
		echo "There's no support for shared libraries on this platform" >&2; \
 | 
							echo "There's no support for shared libraries on this platform" >&2; \
 | 
				
			||||||
		exit 1; \
 | 
							exit 1; \
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					libfips.a:
 | 
				
			||||||
 | 
						dir=fips; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean-shared:
 | 
					clean-shared:
 | 
				
			||||||
	@set -e; for i in $(SHLIBDIRS); do \
 | 
						@set -e; for i in $(SHLIBDIRS); do \
 | 
				
			||||||
		if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
 | 
							if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
 | 
				
			||||||
@@ -451,7 +584,7 @@ tar:
 | 
				
			|||||||
	$(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
 | 
						$(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
 | 
				
			||||||
	tardy --user_number=0  --user_name=openssl \
 | 
						tardy --user_number=0  --user_name=openssl \
 | 
				
			||||||
	      --group_number=0 --group_name=openssl \
 | 
						      --group_number=0 --group_name=openssl \
 | 
				
			||||||
	      --prefix=openssl-$(VERSION) - |\
 | 
						      --prefix=openssl-fips-$(VERSION) - |\
 | 
				
			||||||
	gzip --best >../$(TARFILE).gz; \
 | 
						gzip --best >../$(TARFILE).gz; \
 | 
				
			||||||
	rm -f ../$(TARFILE).list; \
 | 
						rm -f ../$(TARFILE).list; \
 | 
				
			||||||
	ls -l ../$(TARFILE).gz
 | 
						ls -l ../$(TARFILE).gz
 | 
				
			||||||
@@ -473,7 +606,7 @@ dist:
 | 
				
			|||||||
dist_pem_h:
 | 
					dist_pem_h:
 | 
				
			||||||
	(cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
 | 
						(cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install: all install_docs install_sw
 | 
					install: all install_sw
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_sw:
 | 
					install_sw:
 | 
				
			||||||
	@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
 | 
						@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,15 +101,13 @@ LINK_SO=	\
 | 
				
			|||||||
    LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
 | 
					    LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
 | 
				
			||||||
    SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
 | 
					    SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
 | 
				
			||||||
    SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
 | 
					    SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
 | 
				
			||||||
    nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
 | 
					 | 
				
			||||||
    LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
 | 
					    LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
 | 
				
			||||||
    LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
 | 
					    LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
 | 
				
			||||||
    LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
 | 
					    LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
 | 
				
			||||||
    $${SHAREDCMD} $${SHAREDFLAGS} \
 | 
					    $${SHAREDCMD} $${SHAREDFLAGS} \
 | 
				
			||||||
	-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
 | 
						-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
 | 
				
			||||||
	$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
 | 
						$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
 | 
				
			||||||
  ) && $(SYMLINK_SO); \
 | 
					  ) && $(SYMLINK_SO)
 | 
				
			||||||
  ( $(SET_X); rm -f lib$(LIBNAME).exp )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYMLINK_SO=	\
 | 
					SYMLINK_SO=	\
 | 
				
			||||||
	if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
 | 
						if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
 | 
				
			||||||
@@ -202,8 +200,10 @@ link_app.bsd:
 | 
				
			|||||||
# to use native NSModule(3) API and refers to dlfcn as termporary hack.
 | 
					# to use native NSModule(3) API and refers to dlfcn as termporary hack.
 | 
				
			||||||
link_o.darwin:
 | 
					link_o.darwin:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	SHLIB=lib$(LIBNAME); \
 | 
						SHLIB=`expr "$$THIS" : '.*/\([^/\.]*\)\.'`; \
 | 
				
			||||||
	SHLIB_SUFFIX=.so; \
 | 
						SHLIB=$${SHLIB:-lib$(LIBNAME)}; \
 | 
				
			||||||
 | 
						SHLIB_SUFFIX=`expr "$$THIS" : '.*\(\.[^\.]*\)$$'`; \
 | 
				
			||||||
 | 
						SHLIB_SUFFIX=$${SHLIB_SUFFIX:-.so}; \
 | 
				
			||||||
	ALLSYMSFLAGS='-all_load'; \
 | 
						ALLSYMSFLAGS='-all_load'; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
 | 
						SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
 | 
				
			||||||
@@ -236,24 +236,30 @@ link_o.cygwin:
 | 
				
			|||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	INHIBIT_SYMLINKS=yes; \
 | 
						INHIBIT_SYMLINKS=yes; \
 | 
				
			||||||
	SHLIB=cyg$(LIBNAME); \
 | 
						SHLIB=cyg$(LIBNAME); \
 | 
				
			||||||
	expr $(PLATFORM) : 'mingw' > /dev/null && SHLIB=$(LIBNAME)eay32; \
 | 
						base=-Wl,--enable-auto-image-base; \
 | 
				
			||||||
 | 
						if expr $(PLATFORM) : 'mingw' > /dev/null; then \
 | 
				
			||||||
 | 
							SHLIB=$(LIBNAME)eay32; base=; \
 | 
				
			||||||
 | 
						fi; \
 | 
				
			||||||
	SHLIB_SUFFIX=.dll; \
 | 
						SHLIB_SUFFIX=.dll; \
 | 
				
			||||||
	LIBVERSION="$(LIBVERSION)"; \
 | 
						LIBVERSION="$(LIBVERSION)"; \
 | 
				
			||||||
	SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
 | 
						SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
 | 
				
			||||||
	ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
						ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
				
			||||||
	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
						NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
 | 
						SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
 | 
				
			||||||
	$(LINK_SO_O)
 | 
						$(LINK_SO_O)
 | 
				
			||||||
link_a.cygwin:
 | 
					link_a.cygwin:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	INHIBIT_SYMLINKS=yes; \
 | 
						INHIBIT_SYMLINKS=yes; \
 | 
				
			||||||
	SHLIB=cyg$(LIBNAME); \
 | 
						SHLIB=cyg$(LIBNAME); \
 | 
				
			||||||
	expr $(PLATFORM) : 'mingw' > /dev/null && SHLIB=$(LIBNAME)eay32; \
 | 
						base=-Wl,--enable-auto-image-base; \
 | 
				
			||||||
 | 
						if expr $(PLATFORM) : 'mingw' > /dev/null; then \
 | 
				
			||||||
 | 
							SHLIB=$(LIBNAME)eay32; \
 | 
				
			||||||
 | 
							base=;  [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
 | 
				
			||||||
 | 
						fi; \
 | 
				
			||||||
	SHLIB_SUFFIX=.dll; \
 | 
						SHLIB_SUFFIX=.dll; \
 | 
				
			||||||
	SHLIB_SOVER=-$(LIBVERSION); \
 | 
						SHLIB_SOVER=-$(LIBVERSION); \
 | 
				
			||||||
	ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
						ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
				
			||||||
	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
						NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
				
			||||||
	base=;  [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
 | 
					 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
 | 
						SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
 | 
				
			||||||
	[ -f apps/$$SHLIB$$SHLIB_SUFFIX ] && rm apps/$$SHLIB$$SHLIB_SUFFIX; \
 | 
						[ -f apps/$$SHLIB$$SHLIB_SUFFIX ] && rm apps/$$SHLIB$$SHLIB_SUFFIX; \
 | 
				
			||||||
	[ -f test/$$SHLIB$$SHLIB_SUFFIX ] && rm test/$$SHLIB$$SHLIB_SUFFIX; \
 | 
						[ -f test/$$SHLIB$$SHLIB_SUFFIX ] && rm test/$$SHLIB$$SHLIB_SUFFIX; \
 | 
				
			||||||
@@ -278,7 +284,7 @@ link_o.alpha-osf1:
 | 
				
			|||||||
		SHLIB_SOVER=; \
 | 
							SHLIB_SOVER=; \
 | 
				
			||||||
		ALLSYMSFLAGS='-all'; \
 | 
							ALLSYMSFLAGS='-all'; \
 | 
				
			||||||
		NOALLSYMSFLAGS='-none'; \
 | 
							NOALLSYMSFLAGS='-none'; \
 | 
				
			||||||
		SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared"; \
 | 
							SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-B,symbolic"; \
 | 
				
			||||||
		if [ -n "$$SHLIB_HIST" ]; then \
 | 
							if [ -n "$$SHLIB_HIST" ]; then \
 | 
				
			||||||
			SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
 | 
								SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
 | 
				
			||||||
		fi; \
 | 
							fi; \
 | 
				
			||||||
@@ -299,7 +305,7 @@ link_a.alpha-osf1:
 | 
				
			|||||||
		SHLIB_SOVER=; \
 | 
							SHLIB_SOVER=; \
 | 
				
			||||||
		ALLSYMSFLAGS='-all'; \
 | 
							ALLSYMSFLAGS='-all'; \
 | 
				
			||||||
		NOALLSYMSFLAGS='-none'; \
 | 
							NOALLSYMSFLAGS='-none'; \
 | 
				
			||||||
		SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared"; \
 | 
							SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-B,symbolic"; \
 | 
				
			||||||
		if [ -n "$$SHLIB_HIST" ]; then \
 | 
							if [ -n "$$SHLIB_HIST" ]; then \
 | 
				
			||||||
			SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
 | 
								SHAREDFLAGS="$$SHAREDFLAGS -set_version $$SHLIB_HIST"; \
 | 
				
			||||||
		fi; \
 | 
							fi; \
 | 
				
			||||||
@@ -422,7 +428,7 @@ link_o.irix:
 | 
				
			|||||||
		($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
 | 
							($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
 | 
				
			||||||
		ALLSYMSFLAGS="$${MINUSWL}-all"; \
 | 
							ALLSYMSFLAGS="$${MINUSWL}-all"; \
 | 
				
			||||||
		NOALLSYMSFLAGS="$${MINUSWL}-none"; \
 | 
							NOALLSYMSFLAGS="$${MINUSWL}-none"; \
 | 
				
			||||||
		SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
 | 
							SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,-B,symbolic"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	$(LINK_SO_O)
 | 
						$(LINK_SO_O)
 | 
				
			||||||
link_a.irix:
 | 
					link_a.irix:
 | 
				
			||||||
@@ -436,7 +442,7 @@ link_a.irix:
 | 
				
			|||||||
		($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
 | 
							($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSWL="-Wl,"; \
 | 
				
			||||||
		ALLSYMSFLAGS="$${MINUSWL}-all"; \
 | 
							ALLSYMSFLAGS="$${MINUSWL}-all"; \
 | 
				
			||||||
		NOALLSYMSFLAGS="$${MINUSWL}-none"; \
 | 
							NOALLSYMSFLAGS="$${MINUSWL}-none"; \
 | 
				
			||||||
		SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
 | 
							SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,-B,symbolic"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	$(LINK_SO_A)
 | 
						$(LINK_SO_A)
 | 
				
			||||||
link_app.irix:
 | 
					link_app.irix:
 | 
				
			||||||
@@ -460,7 +466,7 @@ link_o.hpux:
 | 
				
			|||||||
	ALLSYMSFLAGS='-Wl,-Fl'; \
 | 
						ALLSYMSFLAGS='-Wl,-Fl'; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
 | 
						expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
 | 
						SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
 | 
						rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
 | 
				
			||||||
	$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 | 
						$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 | 
				
			||||||
@@ -473,7 +479,7 @@ link_a.hpux:
 | 
				
			|||||||
	ALLSYMSFLAGS='-Wl,-Fl'; \
 | 
						ALLSYMSFLAGS='-Wl,-Fl'; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
 | 
						expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
 | 
						SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
 | 
						rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
 | 
				
			||||||
	$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 | 
						$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 | 
				
			||||||
@@ -485,26 +491,26 @@ link_app.hpux:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
link_o.aix:
 | 
					link_o.aix:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]\([0-9]*\)'`; \
 | 
						OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || :; \
 | 
				
			||||||
	OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
 | 
						OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
 | 
				
			||||||
	SHLIB=lib$(LIBNAME).so; \
 | 
						SHLIB=lib$(LIBNAME).so; \
 | 
				
			||||||
	SHLIB_SUFFIX=; \
 | 
						SHLIB_SUFFIX=; \
 | 
				
			||||||
	ALLSYMSFLAGS='-bnogc'; \
 | 
						ALLSYMSFLAGS=''; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -G -bE:lib$(LIBNAME).exp -bM:SRE'; \
 | 
						SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
				
			||||||
	$(LINK_SO_O); rm -rf lib$(LIBNAME).exp
 | 
						$(LINK_SO_O);
 | 
				
			||||||
link_a.aix:
 | 
					link_a.aix:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]\([0-9]*\)'`; \
 | 
						OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || : ; \
 | 
				
			||||||
	OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
 | 
						OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
 | 
				
			||||||
	SHLIB=lib$(LIBNAME).so; \
 | 
						SHLIB=lib$(LIBNAME).so; \
 | 
				
			||||||
	SHLIB_SUFFIX=; \
 | 
						SHLIB_SUFFIX=; \
 | 
				
			||||||
	ALLSYMSFLAGS='-bnogc'; \
 | 
						ALLSYMSFLAGS='-bnogc'; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -G -bE:lib$(LIBNAME).exp -bM:SRE'; \
 | 
						SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
				
			||||||
	$(LINK_SO_A_VIA_O)
 | 
						$(LINK_SO_A_VIA_O)
 | 
				
			||||||
link_app.aix:
 | 
					link_app.aix:
 | 
				
			||||||
	LDFLAGS="$(CFLAGS) -blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
 | 
						LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
 | 
				
			||||||
	$(LINK_APP)
 | 
						$(LINK_APP)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
link_o.reliantunix:
 | 
					link_o.reliantunix:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,9 @@ rem   usage:
 | 
				
			|||||||
rem      build [target] [debug opts] [assembly opts] [configure opts]
 | 
					rem      build [target] [debug opts] [assembly opts] [configure opts]
 | 
				
			||||||
rem
 | 
					rem
 | 
				
			||||||
rem      target        - "netware-clib" - CLib NetWare build (WinSock Sockets)
 | 
					rem      target        - "netware-clib" - CLib NetWare build (WinSock Sockets)
 | 
				
			||||||
rem                    - "netware-libc" - LibC NKS NetWare build (WinSock Sockets)
 | 
					rem                    - "netware-clib-bsdsock" - CLib NetWare build (BSD Sockets)
 | 
				
			||||||
rem                    - "netware-libc-bsdsock" - LibC NKS NetWare build (BSD Sockets)
 | 
					rem                    - "netware-libc" - LibC NetWare build (WinSock Sockets)
 | 
				
			||||||
 | 
					rem                    - "netware-libc-bsdsock" - LibC NetWare build (BSD Sockets)
 | 
				
			||||||
rem 
 | 
					rem 
 | 
				
			||||||
rem      debug opts    - "debug"  - build debug
 | 
					rem      debug opts    - "debug"  - build debug
 | 
				
			||||||
rem
 | 
					rem
 | 
				
			||||||
@@ -71,10 +72,12 @@ if "%1" == "nw-nasm"  set NO_ASM=
 | 
				
			|||||||
if "%1" == "nw-nasm"  set ARG_PROCESSED=YES
 | 
					if "%1" == "nw-nasm"  set ARG_PROCESSED=YES
 | 
				
			||||||
if "%1" == "nw-mwasm" set ASM_MODE=nw-mwasm
 | 
					if "%1" == "nw-mwasm" set ASM_MODE=nw-mwasm
 | 
				
			||||||
if "%1" == "nw-mwasm" set ASSEMBLER=Metrowerks
 | 
					if "%1" == "nw-mwasm" set ASSEMBLER=Metrowerks
 | 
				
			||||||
if "%1" == "nw-mwasm"  set NO_ASM=
 | 
					if "%1" == "nw-mwasm" set NO_ASM=
 | 
				
			||||||
if "%1" == "nw-mwasm" set ARG_PROCESSED=YES
 | 
					if "%1" == "nw-mwasm" set ARG_PROCESSED=YES
 | 
				
			||||||
if "%1" == "netware-clib" set BLD_TARGET=netware-clib
 | 
					if "%1" == "netware-clib" set BLD_TARGET=netware-clib
 | 
				
			||||||
if "%1" == "netware-clib" set ARG_PROCESSED=YES
 | 
					if "%1" == "netware-clib" set ARG_PROCESSED=YES
 | 
				
			||||||
 | 
					if "%1" == "netware-clib-bsdsock" set BLD_TARGET=netware-clib-bsdsock
 | 
				
			||||||
 | 
					if "%1" == "netware-clib-bsdsock" set ARG_PROCESSED=YES
 | 
				
			||||||
if "%1" == "netware-libc" set BLD_TARGET=netware-libc
 | 
					if "%1" == "netware-libc" set BLD_TARGET=netware-libc
 | 
				
			||||||
if "%1" == "netware-libc" set ARG_PROCESSED=YES
 | 
					if "%1" == "netware-libc" set ARG_PROCESSED=YES
 | 
				
			||||||
if "%1" == "netware-libc-bsdsock" set BLD_TARGET=netware-libc-bsdsock
 | 
					if "%1" == "netware-libc-bsdsock" set BLD_TARGET=netware-libc-bsdsock
 | 
				
			||||||
@@ -94,6 +97,7 @@ if "%BLD_TARGET%" == "no_target" goto no_target
 | 
				
			|||||||
rem build the nlm make file name which includes target and debug info
 | 
					rem build the nlm make file name which includes target and debug info
 | 
				
			||||||
set NLM_MAKE=
 | 
					set NLM_MAKE=
 | 
				
			||||||
if "%BLD_TARGET%" == "netware-clib" set NLM_MAKE=netware\nlm_clib
 | 
					if "%BLD_TARGET%" == "netware-clib" set NLM_MAKE=netware\nlm_clib
 | 
				
			||||||
 | 
					if "%BLD_TARGET%" == "netware-clib-bsdsock" set NLM_MAKE=netware\nlm_clib_bsdsock
 | 
				
			||||||
if "%BLD_TARGET%" == "netware-libc" set NLM_MAKE=netware\nlm_libc
 | 
					if "%BLD_TARGET%" == "netware-libc" set NLM_MAKE=netware\nlm_libc
 | 
				
			||||||
if "%BLD_TARGET%" == "netware-libc-bsdsock" set NLM_MAKE=netware\nlm_libc_bsdsock
 | 
					if "%BLD_TARGET%" == "netware-libc-bsdsock" set NLM_MAKE=netware\nlm_libc_bsdsock
 | 
				
			||||||
if "%DEBUG%" == "" set NLM_MAKE=%NLM_MAKE%.mak
 | 
					if "%DEBUG%" == "" set NLM_MAKE=%NLM_MAKE%.mak
 | 
				
			||||||
@@ -110,7 +114,14 @@ echo Generating x86 for %ASSEMBLER% assembler
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
echo Bignum
 | 
					echo Bignum
 | 
				
			||||||
cd crypto\bn\asm
 | 
					cd crypto\bn\asm
 | 
				
			||||||
perl x86.pl %ASM_MODE% > bn-nw.asm
 | 
					rem perl x86.pl %ASM_MODE% > bn-nw.asm
 | 
				
			||||||
 | 
					perl bn-586.pl %ASM_MODE% > bn-nw.asm
 | 
				
			||||||
 | 
					perl co-586.pl %ASM_MODE% > co-nw.asm
 | 
				
			||||||
 | 
					cd ..\..\..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo AES
 | 
				
			||||||
 | 
					cd crypto\aes\asm
 | 
				
			||||||
 | 
					perl aes-586.pl %ASM_MODE% > a-nw.asm
 | 
				
			||||||
cd ..\..\..
 | 
					cd ..\..\..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo DES
 | 
					echo DES
 | 
				
			||||||
@@ -160,6 +171,11 @@ cd crypto\rc5\asm
 | 
				
			|||||||
perl rc5-586.pl %ASM_MODE% > r5-nw.asm
 | 
					perl rc5-586.pl %ASM_MODE% > r5-nw.asm
 | 
				
			||||||
cd ..\..\..
 | 
					cd ..\..\..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo CPUID
 | 
				
			||||||
 | 
					cd crypto
 | 
				
			||||||
 | 
					perl x86cpuid.pl %ASM_MODE% > x86cpuid-nw.asm
 | 
				
			||||||
 | 
					cd ..\
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem ===============================================================
 | 
					rem ===============================================================
 | 
				
			||||||
rem
 | 
					rem
 | 
				
			||||||
:do_config
 | 
					:do_config
 | 
				
			||||||
@@ -176,8 +192,10 @@ echo mk1mf.pl options: %DEBUG% %ASM_MODE% %CONFIG_OPTS% %BLD_TARGET%
 | 
				
			|||||||
echo .
 | 
					echo .
 | 
				
			||||||
perl util\mk1mf.pl %DEBUG% %ASM_MODE% %CONFIG_OPTS% %BLD_TARGET% >%NLM_MAKE%
 | 
					perl util\mk1mf.pl %DEBUG% %ASM_MODE% %CONFIG_OPTS% %BLD_TARGET% >%NLM_MAKE%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make -f %NLM_MAKE% vclean
 | 
				
			||||||
 | 
					echo .
 | 
				
			||||||
echo The makefile "%NLM_MAKE%" has been created use your maketool to
 | 
					echo The makefile "%NLM_MAKE%" has been created use your maketool to
 | 
				
			||||||
echo build (ex: gmake -f %NLM_MAKE%)
 | 
					echo build (ex: make -f %NLM_MAKE%)
 | 
				
			||||||
goto end
 | 
					goto end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem ===============================================================
 | 
					rem ===============================================================
 | 
				
			||||||
@@ -189,8 +207,9 @@ echo .
 | 
				
			|||||||
echo .  usage: build [target] [debug opts] [assembly opts] [configure opts]
 | 
					echo .  usage: build [target] [debug opts] [assembly opts] [configure opts]
 | 
				
			||||||
echo .
 | 
					echo .
 | 
				
			||||||
echo .     target        - "netware-clib" - CLib NetWare build (WinSock Sockets)
 | 
					echo .     target        - "netware-clib" - CLib NetWare build (WinSock Sockets)
 | 
				
			||||||
echo .                   - "netware-libc" - LibC NKS NetWare build (WinSock Sockets)
 | 
					echo .                   - "netware-clib-bsdsock" - CLib NetWare build (BSD Sockets)
 | 
				
			||||||
echo .                   - "netware-libc-bsdsock" - LibC NKS NetWare build (BSD Sockets)
 | 
					echo .                   - "netware-libc" - LibC NetWare build (WinSock Sockets)
 | 
				
			||||||
 | 
					echo .                   - "netware-libc-bsdsock" - LibC NetWare build (BSD Sockets)
 | 
				
			||||||
echo .
 | 
					echo .
 | 
				
			||||||
echo .     debug opts    - "debug"  - build debug
 | 
					echo .     debug opts    - "debug"  - build debug
 | 
				
			||||||
echo .
 | 
					echo .
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,6 +73,7 @@ copy %loc%\test\testsid.pem   %2\openssl\test\
 | 
				
			|||||||
copy %loc%\test\testx509.pem  %2\openssl\test\
 | 
					copy %loc%\test\testx509.pem  %2\openssl\test\
 | 
				
			||||||
copy %loc%\test\v3-cert1.pem  %2\openssl\test\
 | 
					copy %loc%\test\v3-cert1.pem  %2\openssl\test\
 | 
				
			||||||
copy %loc%\test\v3-cert2.pem  %2\openssl\test\
 | 
					copy %loc%\test\v3-cert2.pem  %2\openssl\test\
 | 
				
			||||||
 | 
					copy %loc%\crypto\evp\evptests.txt %2\openssl\test\
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   copy the apps directory stuff
 | 
					rem   copy the apps directory stuff
 | 
				
			||||||
copy %loc%\apps\client.pem    %2\openssl\apps\
 | 
					copy %loc%\apps\client.pem    %2\openssl\apps\
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,12 +34,17 @@ sub main()
 | 
				
			|||||||
   # delete all the output files in the output directory
 | 
					   # delete all the output files in the output directory
 | 
				
			||||||
   unlink <$output_path\\*.*>;
 | 
					   unlink <$output_path\\*.*>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   # open the main log file 
 | 
					   # open the main log file
 | 
				
			||||||
   open(OUT, ">$log_file") || die "unable to open $log_file\n";
 | 
					   open(OUT, ">$log_file") || die "unable to open $log_file\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   
 | 
					   print( OUT "========================================================\n");
 | 
				
			||||||
 | 
					   my $outFile = "$output_path\\version.out";
 | 
				
			||||||
 | 
					   system("openssl2 version (CLIB_OPT)/>$outFile");
 | 
				
			||||||
 | 
					   log_output("CHECKING FOR OPENSSL VERSION:", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   algorithm_tests();
 | 
					   algorithm_tests();
 | 
				
			||||||
   encryption_tests();
 | 
					   encryption_tests();
 | 
				
			||||||
 | 
					   evp_tests();
 | 
				
			||||||
   pem_tests();
 | 
					   pem_tests();
 | 
				
			||||||
   verify_tests();
 | 
					   verify_tests();
 | 
				
			||||||
   ca_tests();
 | 
					   ca_tests();
 | 
				
			||||||
@@ -56,9 +61,10 @@ sub algorithm_tests
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
   my $i;
 | 
					   my $i;
 | 
				
			||||||
   my $outFile;
 | 
					   my $outFile;
 | 
				
			||||||
   my @tests = ( rsa_test, destest, ideatest, bftest, shatest, sha1test,
 | 
					   my @tests = ( rsa_test, destest, ideatest, bftest, bntest, shatest, sha1test,
 | 
				
			||||||
                 md5test, dsatest, md2test, mdc2test, rc2test, rc4test, randtest,
 | 
					                 sha256t, sha512t, dsatest, md2test, md4test, md5test, mdc2test,
 | 
				
			||||||
                 dhtest, exptest );
 | 
					                 rc2test, rc4test, rc5test, randtest, rmdtest, dhtest, ecdhtest,
 | 
				
			||||||
 | 
					                 ecdsatest, ectest, exptest, casttest, hmactest );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   print( "\nRUNNING CRYPTO ALGORITHM TESTS:\n\n");
 | 
					   print( "\nRUNNING CRYPTO ALGORITHM TESTS:\n\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -68,16 +74,16 @@ sub algorithm_tests
 | 
				
			|||||||
   foreach $i (@tests)
 | 
					   foreach $i (@tests)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      if (-e "$base_path\\$i.nlm")
 | 
					      if (-e "$base_path\\$i.nlm")
 | 
				
			||||||
	  {
 | 
					      {
 | 
				
			||||||
         $outFile = "$output_path\\$i.out";
 | 
					         $outFile = "$output_path\\$i.out";
 | 
				
			||||||
         system("$i > $outFile");
 | 
					         system("$i (CLIB_OPT)/>$outFile");
 | 
				
			||||||
         log_desc("Test: $i\.nlm:");
 | 
					         log_desc("Test: $i\.nlm:");
 | 
				
			||||||
         log_output("", $outFile );
 | 
					         log_output("", $outFile );
 | 
				
			||||||
	  }
 | 
					      }
 | 
				
			||||||
	  else
 | 
					      else
 | 
				
			||||||
	  {
 | 
					      {
 | 
				
			||||||
         log_desc("Test: $i\.nlm: file not found");
 | 
					         log_desc("Test: $i\.nlm: file not found");
 | 
				
			||||||
	  }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -109,24 +115,24 @@ sub encryption_tests
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      # do encryption
 | 
					      # do encryption
 | 
				
			||||||
      $outFile = "$output_path\\enc.out";
 | 
					      $outFile = "$output_path\\enc.out";
 | 
				
			||||||
      system("openssl2 $i -e -bufsize 113 -k test -in $input -out $cipher > $outFile" );
 | 
					      system("openssl2 $i -e -bufsize 113 -k test -in $input -out $cipher (CLIB_OPT)/>$outFile" );
 | 
				
			||||||
      log_output("Encrypting: $input --> $cipher", $outFile);
 | 
					      log_output("Encrypting: $input --> $cipher", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # do decryption
 | 
					      # do decryption
 | 
				
			||||||
      $outFile = "$output_path\\dec.out";
 | 
					      $outFile = "$output_path\\dec.out";
 | 
				
			||||||
      system("openssl2 $i -d -bufsize 157 -k test -in $cipher -out $clear > $outFile");
 | 
					      system("openssl2 $i -d -bufsize 157 -k test -in $cipher -out $clear (CLIB_OPT)/>$outFile");
 | 
				
			||||||
      log_output("Decrypting: $cipher --> $clear", $outFile);
 | 
					      log_output("Decrypting: $cipher --> $clear", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # compare files
 | 
					      # compare files
 | 
				
			||||||
      $x = compare_files( $input, $clear, 1);
 | 
					      $x = compare_files( $input, $clear, 1);
 | 
				
			||||||
      if ( $x == 0 )
 | 
					      if ( $x == 0 )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "SUCCESS - files match: $input, $clear\n");
 | 
					         print( "\rSUCCESS - files match: $input, $clear\n");
 | 
				
			||||||
         print( OUT "SUCCESS - files match: $input, $clear\n");
 | 
					         print( OUT "SUCCESS - files match: $input, $clear\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "ERROR: files don't match\n");
 | 
					         print( "\rERROR: files don't match\n");
 | 
				
			||||||
         print( OUT "ERROR: files don't match\n");
 | 
					         print( OUT "ERROR: files don't match\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -136,24 +142,24 @@ sub encryption_tests
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      # do encryption B64
 | 
					      # do encryption B64
 | 
				
			||||||
      $outFile = "$output_path\\B64enc.out";
 | 
					      $outFile = "$output_path\\B64enc.out";
 | 
				
			||||||
      system("openssl2 $i -a -e -bufsize 113 -k test -in $input -out $cipher > $outFile");
 | 
					      system("openssl2 $i -a -e -bufsize 113 -k test -in $input -out $cipher (CLIB_OPT)/>$outFile");
 | 
				
			||||||
      log_output("Encrypting(B64): $cipher --> $clear", $outFile);
 | 
					      log_output("Encrypting(B64): $cipher --> $clear", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # do decryption B64
 | 
					      # do decryption B64
 | 
				
			||||||
      $outFile = "$output_path\\B64dec.out";
 | 
					      $outFile = "$output_path\\B64dec.out";
 | 
				
			||||||
      system("openssl2 $i -a -d -bufsize 157 -k test -in $cipher -out $clear > $outFile");
 | 
					      system("openssl2 $i -a -d -bufsize 157 -k test -in $cipher -out $clear (CLIB_OPT)/>$outFile");
 | 
				
			||||||
      log_output("Decrypting(B64): $cipher --> $clear", $outFile);
 | 
					      log_output("Decrypting(B64): $cipher --> $clear", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # compare files
 | 
					      # compare files
 | 
				
			||||||
      $x = compare_files( $input, $clear, 1);
 | 
					      $x = compare_files( $input, $clear, 1);
 | 
				
			||||||
      if ( $x == 0 )
 | 
					      if ( $x == 0 )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "SUCCESS - files match: $input, $clear\n");
 | 
					         print( "\rSUCCESS - files match: $input, $clear\n");
 | 
				
			||||||
         print( OUT "SUCCESS - files match: $input, $clear\n");
 | 
					         print( OUT "SUCCESS - files match: $input, $clear\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "ERROR: files don't match\n");
 | 
					         print( "\rERROR: files don't match\n");
 | 
				
			||||||
         print( OUT "ERROR: files don't match\n");
 | 
					         print( OUT "ERROR: files don't match\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -199,24 +205,24 @@ sub pem_tests
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if ($i ne "req" )
 | 
					      if ($i ne "req" )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         system("openssl2 $i -in $input -out $tmp_out > $outFile");
 | 
					         system("openssl2 $i -in $input -out $tmp_out (CLIB_OPT)/>$outFile");
 | 
				
			||||||
         log_output( "openssl2 $i -in $input -out $tmp_out", $outFile);
 | 
					         log_output( "openssl2 $i -in $input -out $tmp_out", $outFile);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         system("openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config > $outFile");
 | 
					         system("openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config (CLIB_OPT)/>$outFile");
 | 
				
			||||||
         log_output( "openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config", $outFile );
 | 
					         log_output( "openssl2 $i -in $input -out $tmp_out -config $OpenSSL_config", $outFile );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      $x = compare_files( $input, $tmp_out);
 | 
					      $x = compare_files( $input, $tmp_out);
 | 
				
			||||||
      if ( $x == 0 )
 | 
					      if ( $x == 0 )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "SUCCESS - files match: $input, $tmp_out\n");
 | 
					         print( "\rSUCCESS - files match: $input, $tmp_out\n");
 | 
				
			||||||
         print( OUT "SUCCESS - files match: $input, $tmp_out\n");
 | 
					         print( OUT "SUCCESS - files match: $input, $tmp_out\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         print( "ERROR: files don't match\n");
 | 
					         print( "\rERROR: files don't match\n");
 | 
				
			||||||
         print( OUT "ERROR: files don't match\n");
 | 
					         print( OUT "ERROR: files don't match\n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      do_wait();
 | 
					      do_wait();
 | 
				
			||||||
@@ -231,7 +237,8 @@ sub verify_tests
 | 
				
			|||||||
   my $i;
 | 
					   my $i;
 | 
				
			||||||
   my $outFile = "$output_path\\verify.out";
 | 
					   my $outFile = "$output_path\\verify.out";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   my @cert_files = <$cert_path\\*.pem>;
 | 
					   $cert_path =~ s/\\/\//g;
 | 
				
			||||||
 | 
					   my @cert_files = <$cert_path/*.pem>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   print( "\nRUNNING VERIFY TESTS:\n\n");
 | 
					   print( "\nRUNNING VERIFY TESTS:\n\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -242,7 +249,7 @@ sub verify_tests
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   foreach $i (@cert_files)
 | 
					   foreach $i (@cert_files)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      system("openssl2 verify -CAfile $tmp_cert $i >$outFile");
 | 
					      system("openssl2 verify -CAfile $tmp_cert $i (CLIB_OPT)/>$outFile");
 | 
				
			||||||
      log_desc("Verifying cert: $i");
 | 
					      log_desc("Verifying cert: $i");
 | 
				
			||||||
      log_output("openssl2 verify -CAfile $tmp_cert $i", $outFile);
 | 
					      log_output("openssl2 verify -CAfile $tmp_cert $i", $outFile);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
@@ -263,103 +270,103 @@ sub ssl_tests
 | 
				
			|||||||
   print( OUT "\n========================================================\n");
 | 
					   print( OUT "\n========================================================\n");
 | 
				
			||||||
   print( OUT "SSL TESTS:\n\n");
 | 
					   print( OUT "SSL TESTS:\n\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -ssl2 >$outFile");
 | 
					   system("ssltest -ssl2 (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2:");
 | 
					   log_desc("Testing sslv2:");
 | 
				
			||||||
   log_output("ssltest -ssl2", $outFile);
 | 
					   log_output("ssltest -ssl2", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl2 -server_auth >$outFile");
 | 
					   system("$ssltest -ssl2 -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with server authentication:");
 | 
					   log_desc("Testing sslv2 with server authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl2 -server_auth", $outFile);
 | 
					   log_output("$ssltest -ssl2 -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl2 -client_auth >$outFile");
 | 
					   system("$ssltest -ssl2 -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with client authentication:");
 | 
					   log_desc("Testing sslv2 with client authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl2 -client_auth", $outFile);
 | 
					   log_output("$ssltest -ssl2 -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl2 -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -ssl2 -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with both client and server authentication:");
 | 
					   log_desc("Testing sslv2 with both client and server authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl2 -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -ssl2 -server_auth -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -ssl3 >$outFile");
 | 
					   system("ssltest -ssl3 (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3:");
 | 
					   log_desc("Testing sslv3:");
 | 
				
			||||||
   log_output("ssltest -ssl3", $outFile);
 | 
					   log_output("ssltest -ssl3", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl3 -server_auth >$outFile");
 | 
					   system("$ssltest -ssl3 -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with server authentication:");
 | 
					   log_desc("Testing sslv3 with server authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl3 -server_auth", $outFile);
 | 
					   log_output("$ssltest -ssl3 -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl3 -client_auth >$outFile");
 | 
					   system("$ssltest -ssl3 -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with client authentication:");
 | 
					   log_desc("Testing sslv3 with client authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl3 -client_auth", $outFile);
 | 
					   log_output("$ssltest -ssl3 -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -ssl3 -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -ssl3 -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with both client and server authentication:");
 | 
					   log_desc("Testing sslv3 with both client and server authentication:");
 | 
				
			||||||
   log_output("$ssltest -ssl3 -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -ssl3 -server_auth -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest >$outFile");
 | 
					   system("ssltest (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3:");
 | 
					   log_desc("Testing sslv2/sslv3:");
 | 
				
			||||||
   log_output("ssltest", $outFile);
 | 
					   log_output("ssltest", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -server_auth >$outFile");
 | 
					   system("$ssltest -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with server authentication:");
 | 
					   log_desc("Testing sslv2/sslv3 with server authentication:");
 | 
				
			||||||
   log_output("$ssltest -server_auth", $outFile);
 | 
					   log_output("$ssltest -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -client_auth >$outFile");
 | 
					   system("$ssltest -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with client authentication:");
 | 
					   log_desc("Testing sslv2/sslv3 with client authentication:");
 | 
				
			||||||
   log_output("$ssltest -client_auth ", $outFile);
 | 
					   log_output("$ssltest -client_auth ", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with both client and server authentication:");
 | 
					   log_desc("Testing sslv2/sslv3 with both client and server authentication:");
 | 
				
			||||||
   log_output("$ssltest -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -server_auth -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -bio_pair -ssl2 >$outFile");
 | 
					   system("ssltest -bio_pair -ssl2 (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 via BIO pair:");
 | 
					   log_desc("Testing sslv2 via BIO pair:");
 | 
				
			||||||
   log_output("ssltest -bio_pair -ssl2", $outFile);
 | 
					   log_output("ssltest -bio_pair -ssl2", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -bio_pair -dhe1024dsa -v >$outFile");
 | 
					   system("ssltest -bio_pair -dhe1024dsa -v (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with 1024 bit DHE via BIO pair:");
 | 
					   log_desc("Testing sslv2/sslv3 with 1024 bit DHE via BIO pair:");
 | 
				
			||||||
   log_output("ssltest -bio_pair -dhe1024dsa -v", $outFile);
 | 
					   log_output("ssltest -bio_pair -dhe1024dsa -v", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl2 -server_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl2 -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2 with server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl2 -server_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl2 -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl2 -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl2 -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with client authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2 with client authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl2 -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl2 -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl2 -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl2 -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2 with both client and server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2 with both client and server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl2 -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl2 -server_auth -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -bio_pair -ssl3 >$outFile");
 | 
					   system("ssltest -bio_pair -ssl3 (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 via BIO pair:");
 | 
					   log_desc("Testing sslv3 via BIO pair:");
 | 
				
			||||||
   log_output("ssltest -bio_pair -ssl3", $outFile);
 | 
					   log_output("ssltest -bio_pair -ssl3", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl3 -server_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl3 -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv3 with server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl3 -server_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl3 -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl3 -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl3 -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with client authentication  via BIO pair:");
 | 
					   log_desc("Testing sslv3 with client authentication  via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl3 -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl3 -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -ssl3 -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -ssl3 -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv3 with both client and server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv3 with both client and server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -ssl3 -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -ssl3 -server_auth -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("ssltest -bio_pair >$outFile");
 | 
					   system("ssltest -bio_pair (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 via BIO pair:");
 | 
					   log_desc("Testing sslv2/sslv3 via BIO pair:");
 | 
				
			||||||
   log_output("ssltest -bio_pair", $outFile);
 | 
					   log_output("ssltest -bio_pair", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -server_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -server_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2/sslv3 with server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -server_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -server_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with client authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2/sslv3 with client authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -client_auth", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("$ssltest -bio_pair -server_auth -client_auth >$outFile");
 | 
					   system("$ssltest -bio_pair -server_auth -client_auth (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Testing sslv2/sslv3 with both client and server authentication via BIO pair:");
 | 
					   log_desc("Testing sslv2/sslv3 with both client and server authentication via BIO pair:");
 | 
				
			||||||
   log_output("$ssltest -bio_pair -server_auth -client_auth", $outFile);
 | 
					   log_output("$ssltest -bio_pair -server_auth -client_auth", $outFile);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -389,43 +396,43 @@ sub ca_tests
 | 
				
			|||||||
   print( OUT "\n========================================================\n");
 | 
					   print( OUT "\n========================================================\n");
 | 
				
			||||||
   print( OUT "CA TESTS:\n");
 | 
					   print( OUT "CA TESTS:\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new >$outFile");
 | 
					   system("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Make a certificate request using req:");
 | 
					   log_desc("Make a certificate request using req:");
 | 
				
			||||||
   log_output("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new", $outFile);
 | 
					   log_output("openssl2 req -config $CAconf -out $CAreq -keyout $CAkey -new", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey >$outFile");
 | 
					   system("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Convert the certificate request into a self signed certificate using x509:");
 | 
					   log_desc("Convert the certificate request into a self signed certificate using x509:");
 | 
				
			||||||
   log_output("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey", $outFile);
 | 
					   log_output("openssl2 x509 -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2 >$outFile");
 | 
					   system("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2 (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Convert a certificate into a certificate request using 'x509':");
 | 
					   log_desc("Convert a certificate into a certificate request using 'x509':");
 | 
				
			||||||
   log_output("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2", $outFile);
 | 
					   log_output("openssl2 x509 -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout >$outFile");
 | 
					   system("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_output("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout", $outFile);
 | 
					   log_output("openssl2 req -config $OpenSSL_config -verify -in $CAreq -noout", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout >$outFile");
 | 
					   system("openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_output( "openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout", $outFile);
 | 
					   log_output( "openssl2 req -config $OpenSSL_config -verify -in $CAreq2 -noout", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 verify -CAfile $CAcert $CAcert >$outFile");
 | 
					   system("openssl2 verify -CAfile $CAcert $CAcert (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_output("openssl2 verify -CAfile $CAcert $CAcert", $outFile);
 | 
					   log_output("openssl2 verify -CAfile $CAcert $CAcert", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new >$outFile");
 | 
					   system("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Make another certificate request using req:");
 | 
					   log_desc("Make another certificate request using req:");
 | 
				
			||||||
   log_output("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new", $outFile);
 | 
					   log_output("openssl2 req -config $Uconf -out $Ureq -keyout $Ukey -new", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial >$outFile");
 | 
					   system("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Sign certificate request with the just created CA via x509:");
 | 
					   log_desc("Sign certificate request with the just created CA via x509:");
 | 
				
			||||||
   log_output("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial", $outFile);
 | 
					   log_output("openssl2 x509 -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -CAserial $CAserial", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 verify -CAfile $CAcert $Ucert >$outFile");
 | 
					   system("openssl2 verify -CAfile $CAcert $Ucert (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_output("openssl2 verify -CAfile $CAcert $Ucert", $outFile);
 | 
					   log_output("openssl2 verify -CAfile $CAcert $Ucert", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   system("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert >$outFile");
 | 
					   system("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert (CLIB_OPT)/>$outFile");
 | 
				
			||||||
   log_desc("Certificate details");
 | 
					   log_desc("Certificate details");
 | 
				
			||||||
   log_output("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert", $outFile);
 | 
					   log_output("openssl2 x509 -subject -issuer -startdate -enddate -noout -in $Ucert", $outFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   print(OUT "-- \n");
 | 
					   print(OUT "--\n");
 | 
				
			||||||
   print(OUT "The generated CA certificate is $CAcert\n");
 | 
					   print(OUT "The generated CA certificate is $CAcert\n");
 | 
				
			||||||
   print(OUT "The generated CA private key is $CAkey\n");
 | 
					   print(OUT "The generated CA private key is $CAkey\n");
 | 
				
			||||||
   print(OUT "The current CA signing serial number is in $CAserial\n");
 | 
					   print(OUT "The current CA signing serial number is in $CAserial\n");
 | 
				
			||||||
@@ -435,6 +442,29 @@ sub ca_tests
 | 
				
			|||||||
   print(OUT "--\n");
 | 
					   print(OUT "--\n");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					sub evp_tests
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   my $i = 'evp_test';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   print( "\nRUNNING EVP TESTS:\n\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   print( OUT "\n========================================================\n");
 | 
				
			||||||
 | 
					   print( OUT "EVP TESTS:\n\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (-e "$base_path\\$i.nlm")
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					       my $outFile = "$output_path\\$i.out";
 | 
				
			||||||
 | 
					       system("$i $test_path\\evptests.txt (CLIB_OPT)/>$outFile");
 | 
				
			||||||
 | 
					       log_desc("Test: $i\.nlm:");
 | 
				
			||||||
 | 
					       log_output("", $outFile );
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					       log_desc("Test: $i\.nlm: file not found");
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
############################################################################
 | 
					############################################################################
 | 
				
			||||||
sub log_output( $ $ )
 | 
					sub log_output( $ $ )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -445,7 +475,7 @@ sub log_output( $ $ )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   if ($desc)
 | 
					   if ($desc)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
      print("$desc\n");
 | 
					      print("\r$desc\n");
 | 
				
			||||||
      print(OUT "$desc\n");
 | 
					      print(OUT "$desc\n");
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -457,8 +487,8 @@ sub log_output( $ $ )
 | 
				
			|||||||
      # copy test output to log file
 | 
					      # copy test output to log file
 | 
				
			||||||
   open(IN, "<$file");
 | 
					   open(IN, "<$file");
 | 
				
			||||||
   while (<IN>)
 | 
					   while (<IN>)
 | 
				
			||||||
   { 
 | 
					   {
 | 
				
			||||||
      print(OUT $_); 
 | 
					      print(OUT $_);
 | 
				
			||||||
      if ( $_ =~ /ERROR/ )
 | 
					      if ( $_ =~ /ERROR/ )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         $error = 1;
 | 
					         $error = 1;
 | 
				
			||||||
@@ -485,13 +515,13 @@ sub log_output( $ $ )
 | 
				
			|||||||
      $key = getc;
 | 
					      $key = getc;
 | 
				
			||||||
      print("\n");
 | 
					      print("\n");
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      # Several of the testing scripts run a loop loading the 
 | 
					      # Several of the testing scripts run a loop loading the
 | 
				
			||||||
      # same NLM with different options.
 | 
					      # same NLM with different options.
 | 
				
			||||||
      # On slow NetWare machines there appears to be some delay in the 
 | 
					      # On slow NetWare machines there appears to be some delay in the
 | 
				
			||||||
      # OS actually unloading the test nlms and the OS complains about.
 | 
					      # OS actually unloading the test nlms and the OS complains about.
 | 
				
			||||||
      # the NLM already being loaded.  This additional pause is to 
 | 
					      # the NLM already being loaded.  This additional pause is to
 | 
				
			||||||
      # to help provide a little more time for unloading before trying to 
 | 
					      # to help provide a little more time for unloading before trying to
 | 
				
			||||||
      # load again.
 | 
					      # load again.
 | 
				
			||||||
   sleep(1);
 | 
					   sleep(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -562,7 +592,7 @@ sub do_wait()
 | 
				
			|||||||
############################################################################
 | 
					############################################################################
 | 
				
			||||||
sub make_tmp_cert_file()
 | 
					sub make_tmp_cert_file()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   my @cert_files = <$cert_path\\*.pem>;
 | 
					   my @cert_files = <$cert_path/*.pem>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # delete the file if it already exists
 | 
					      # delete the file if it already exists
 | 
				
			||||||
   unlink($tmp_cert);
 | 
					   unlink($tmp_cert);
 | 
				
			||||||
@@ -570,7 +600,7 @@ sub make_tmp_cert_file()
 | 
				
			|||||||
   open( TMP_CERT, ">$tmp_cert") || die "\nunable to open $tmp_cert\n";
 | 
					   open( TMP_CERT, ">$tmp_cert") || die "\nunable to open $tmp_cert\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   print("building temporary cert file\n");
 | 
					   print("building temporary cert file\n");
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
   # create a temporary cert file that contains all the certs
 | 
					   # create a temporary cert file that contains all the certs
 | 
				
			||||||
   foreach $i (@cert_files)
 | 
					   foreach $i (@cert_files)
 | 
				
			||||||
   {
 | 
					   {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,75 +16,97 @@ if "a%1" == "a" goto usage
 | 
				
			|||||||
               
 | 
					               
 | 
				
			||||||
set LIBC_BUILD=
 | 
					set LIBC_BUILD=
 | 
				
			||||||
set CLIB_BUILD=
 | 
					set CLIB_BUILD=
 | 
				
			||||||
 | 
					set GNUC=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "%1" == "netware-clib" set CLIB_BUILD=Y
 | 
					if "%1" == "netware-clib" set CLIB_BUILD=Y
 | 
				
			||||||
if "%1" == "netware-clib" set LIBC_BUILD=
 | 
					if "%1" == "netware-clib" set LIBC_BUILD=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "%1" == "netware-libc"  set LIBC_BUILD=Y
 | 
					if "%1" == "netware-libc" set LIBC_BUILD=Y
 | 
				
			||||||
if "%1" == "netware-libc"  set CLIB_BUILD=
 | 
					if "%1" == "netware-libc" set CLIB_BUILD=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if "%2" == "gnuc" set GNUC=Y
 | 
				
			||||||
 | 
					if "%2" == "codewarrior" set GNUC=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Location of tools (compiler, linker, etc)
 | 
					rem   Location of tools (compiler, linker, etc)
 | 
				
			||||||
set TOOLS=d:\i_drive\tools
 | 
					if "%NDKBASE%" == "" set NDKBASE=c:\Novell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   If Perl for Win32 is not already in your path, add it here
 | 
					rem   If Perl for Win32 is not already in your path, add it here
 | 
				
			||||||
set PERL_PATH=
 | 
					set PERL_PATH=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Define path to the Metrowerks command line tools
 | 
					rem   Define path to the Metrowerks command line tools
 | 
				
			||||||
 | 
					rem   or GNU Crosscompiler gcc / nlmconv
 | 
				
			||||||
rem   ( compiler, assembler, linker)
 | 
					rem   ( compiler, assembler, linker)
 | 
				
			||||||
set METROWERKS_PATH=%TOOLS%\codewar\pdk_21\tools\command line tools
 | 
					if "%GNUC%" == "Y" set COMPILER_PATH=c:\usr\i586-netware\bin;c:\usr\bin
 | 
				
			||||||
rem set METROWERKS_PATH=%TOOLS%\codewar\PDK_40\Other Metrowerks Tools\Command Line Tools
 | 
					if "%GNUC%" == "" set COMPILER_PATH=c:\prg\cwcmdl40
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   If using gnu make define path to utility
 | 
					rem   If using gnu make define path to utility
 | 
				
			||||||
set GNU_MAKE_PATH=%TOOLS%\gnu
 | 
					rem set GNU_MAKE_PATH=%NDKBASE%\gnu
 | 
				
			||||||
 | 
					set GNU_MAKE_PATH=c:\prg\tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   If using ms nmake define path to nmake
 | 
					rem   If using ms nmake define path to nmake
 | 
				
			||||||
set MS_NMAKE_PATH=%TOOLS%\msvc\600\bin
 | 
					rem set MS_NMAKE_PATH=%NDKBASE%\msvc\600\bin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   If using NASM assembler define path
 | 
					rem   If using NASM assembler define path
 | 
				
			||||||
set NASM_PATH=%TOOLS%\nasm
 | 
					rem set NASM_PATH=%NDKBASE%\nasm
 | 
				
			||||||
 | 
					set NASM_PATH=c:\prg\tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Update path to include tool paths
 | 
					rem   Update path to include tool paths
 | 
				
			||||||
set path=%path%;%METROWERKS_PATH%
 | 
					set path=%path%;%COMPILER_PATH%
 | 
				
			||||||
if not "%GNU_MAKE_PATH%" == "" set path=%path%;%GNU_MAKE_PATH%
 | 
					if not "%GNU_MAKE_PATH%" == "" set path=%path%;%GNU_MAKE_PATH%
 | 
				
			||||||
if not "%MS_NMAKE_PATH%" == "" set path=%path%;%MS_NMAKE_PATH%
 | 
					if not "%MS_NMAKE_PATH%" == "" set path=%path%;%MS_NMAKE_PATH%
 | 
				
			||||||
if not "%NASM_PATH%"     == "" set path=%path%;%NASM_PATH%
 | 
					if not "%NASM_PATH%"     == "" set path=%path%;%NASM_PATH%
 | 
				
			||||||
if not "%PERL_PATH%"     == "" set path=%path%;%PERL_PATH%
 | 
					if not "%PERL_PATH%"     == "" set path=%path%;%PERL_PATH%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Set MWCIncludes to location of Novell NDK includes
 | 
					rem   Set INCLUDES to location of Novell NDK includes
 | 
				
			||||||
if "%LIBC_BUILD%" == "Y" set MWCIncludes=%TOOLS%\ndk\libc\include;%TOOLS%\ndk\libc\include\winsock;.\engines
 | 
					if "%LIBC_BUILD%" == "Y" set INCLUDE=%NDKBASE%\ndk\libc\include;%NDKBASE%\ndk\libc\include\winsock
 | 
				
			||||||
if "%CLIB_BUILD%" == "Y" set MWCIncludes=%TOOLS%\ndk\nwsdk\include\nlm;.\engines
 | 
					if "%CLIB_BUILD%" == "Y" set INCLUDE=%NDKBASE%\ndk\nwsdk\include\nlm;%NDKBASE%\ws295sdk\include
 | 
				
			||||||
set include=
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Set Imports to location of Novell NDK import files
 | 
					rem   Set Imports to location of Novell NDK import files
 | 
				
			||||||
if "%LIBC_BUILD%" == "Y" set IMPORTS=%TOOLS%\ndk\libc\imports
 | 
					if "%LIBC_BUILD%" == "Y" set IMPORTS=%NDKBASE%\ndk\libc\imports
 | 
				
			||||||
if "%CLIB_BUILD%" == "Y" set IMPORTS=%TOOLS%\ndk\nwsdk\imports
 | 
					if "%CLIB_BUILD%" == "Y" set IMPORTS=%NDKBASE%\ndk\nwsdk\imports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rem   Set PRELUDE to the absolute path of the prelude object to link with in
 | 
					rem   Set PRELUDE to the absolute path of the prelude object to link with in
 | 
				
			||||||
rem   the Metrowerks NetWare PDK - NOTE: for Clib builds "clibpre.o" is 
 | 
					rem   the Metrowerks NetWare PDK - NOTE: for Clib builds "clibpre.o" is 
 | 
				
			||||||
rem   recommended, for LibC NKS builds libcpre.o must be used
 | 
					rem   recommended, for LibC NKS builds libcpre.o must be used
 | 
				
			||||||
 | 
					if "%GNUC%" == "Y" goto gnuc
 | 
				
			||||||
if "%LIBC_BUILD%" == "Y" set PRELUDE=%IMPORTS%\libcpre.o
 | 
					if "%LIBC_BUILD%" == "Y" set PRELUDE=%IMPORTS%\libcpre.o
 | 
				
			||||||
if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\clibpre.o
 | 
					rem if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\clibpre.o
 | 
				
			||||||
 | 
					if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\prelude.o
 | 
				
			||||||
 | 
					echo using MetroWerks CodeWarrior 
 | 
				
			||||||
 | 
					goto info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:gnuc
 | 
				
			||||||
 | 
					if "%LIBC_BUILD%" == "Y" set PRELUDE=%IMPORTS%\libcpre.gcc.o
 | 
				
			||||||
 | 
					rem if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\clibpre.gcc.o
 | 
				
			||||||
 | 
					if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\prelude.gcc.o
 | 
				
			||||||
 | 
					echo using GNU GCC Compiler 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:info
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "%LIBC_BUILD%" == "Y" echo Enviroment configured for LibC build
 | 
					if "%LIBC_BUILD%" == "Y" echo Enviroment configured for LibC build
 | 
				
			||||||
if "%LIBC_BUILD%" == "Y" echo use "netware\build.bat netware-libc ..." 
 | 
					if "%LIBC_BUILD%" == "Y" echo use "netware\build.bat netware-libc ..." 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "%CLIB_BUILD%" == "Y" echo Enviroment configured for CLib build
 | 
					if "%CLIB_BUILD%" == "Y" echo Enviroment configured for CLib build
 | 
				
			||||||
if "%CLIB_BUILD%" == "Y" echo use "netware\build.bat netware-clib ..." 
 | 
					if "%CLIB_BUILD%" == "Y" echo use "netware\build.bat netware-clib ..." 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto end
 | 
					goto end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:usage
 | 
					:usage
 | 
				
			||||||
rem ===============================================================
 | 
					rem ===============================================================
 | 
				
			||||||
echo .
 | 
					echo.
 | 
				
			||||||
echo . No target build specified!
 | 
					echo No target build specified!
 | 
				
			||||||
echo .
 | 
					echo.
 | 
				
			||||||
echo . usage: set_env [target]
 | 
					echo usage: set_env [target] [compiler]
 | 
				
			||||||
echo .
 | 
					echo.
 | 
				
			||||||
echo .   target      - "netware-clib" - Clib build
 | 
					echo target      - "netware-clib" - Clib build
 | 
				
			||||||
echo .               - "netware-libc" - LibC build
 | 
					echo             - "netware-libc" - LibC build
 | 
				
			||||||
echo .
 | 
					echo.
 | 
				
			||||||
 | 
					echo compiler    - "gnuc"         - GNU GCC Compiler
 | 
				
			||||||
 | 
					echo             - "codewarrior"  - MetroWerks CodeWarrior (default)
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:end
 | 
					:end
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								README
									
									
									
									
									
								
							@@ -1,10 +1,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 OpenSSL 0.9.8f-dev
 | 
					 OpenSSL 0.9.8h-fips-dev test version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Copyright (c) 1998-2007 The OpenSSL Project
 | 
					 Copyright (c) 1998-2007 The OpenSSL Project
 | 
				
			||||||
 Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
 | 
					 Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
 | 
				
			||||||
 All rights reserved.
 | 
					 All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 WARNING
 | 
				
			||||||
 | 
					 -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 This version of OpenSSL is a port of the FIPS 140-2 code to OpenSSL
 | 
				
			||||||
 | 
					 0.9.8. See the file README.FIPS for brief usage details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 DESCRIPTION
 | 
					 DESCRIPTION
 | 
				
			||||||
 -----------
 | 
					 -----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										84
									
								
								README.FIPS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								README.FIPS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					Brief instructions on using OpenSSL 0.9.8 FIPS 140-2 test branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NOTE: this distribution is NOT FIPS140-2 validated. These instructions are
 | 
				
			||||||
 | 
					intended for people who wish to test the OpenSSL FIPS 140-2 1.2 module. More
 | 
				
			||||||
 | 
					complete instructions will be made available after validation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Build from test tarball.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Download the OpenSSL test 1.2 source tree. The current version has the CVS tag
 | 
				
			||||||
 | 
					FIPS_098_TEST_8 or can be downloaded from:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ftp://ftp.openssl.org/snapshot/openssl-fips-test-1.2.0.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ignore any instructions in that tree: they are likely to be out of date.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you are using a Unix like environment run the following commands. You may
 | 
				
			||||||
 | 
					NOT specify ANY other options at this stage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					./config fipscanisterbuild
 | 
				
			||||||
 | 
					make
 | 
				
			||||||
 | 
					make install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will build and install the test 1.2 module and binaries under
 | 
				
			||||||
 | 
					/usr/local/fips-1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For Windows you need VC++, perl and NASM installed. This is now a pure VC++
 | 
				
			||||||
 | 
					build: no alternative compilers or tools are required. From a VC++ environment
 | 
				
			||||||
 | 
					do:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ms\do_fips
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It should report that the compile was successful.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will compile binaries into the out32dll directory. They can be copied to
 | 
				
			||||||
 | 
					a more convenient location.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Link test module to a more recent version of OpenSSL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Once the test module has been installed it can be linked against a more recent
 | 
				
			||||||
 | 
					version of OpenSSL. Currently only versions from the 0.9.8-fips stable branch
 | 
				
			||||||
 | 
					can be used. It has the CVS tag OpenSSL-fips-0_9_8-stable daily snaphots can
 | 
				
			||||||
 | 
					also be downloaded as:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ftp://ftp.openssl.org/snapshot/openssl-0.9.8-fips-test-SNAP-YYMMDD.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For a Unix build the standrd build procedure is followed and the option "fips"
 | 
				
			||||||
 | 
					is passed to either the config or Configure scripts. The fipscanisterbuild
 | 
				
			||||||
 | 
					option MUST NOT be used. Any other options may be included. Static libraries
 | 
				
			||||||
 | 
					can be built using the no-shared option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					./config fips
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					./config fips no-shared
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For Windows builds the options "fips" and --with-fipslibdir=<path> are passed
 | 
				
			||||||
 | 
					to the Configure script where <path> is wherever the module was installed
 | 
				
			||||||
 | 
					For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					perl Configure fips --with-fipslibdir=C:\some\path\fips
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then the build process continues in the normal way for example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ms\do_nasm
 | 
				
			||||||
 | 
					nmake -f ms\ntdll.mak
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for DLLs or
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ms\do_nasm
 | 
				
			||||||
 | 
					nmake -f ms\nt.mak
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for static builds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. Test new version of OpenSSL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The new test FIPS enabled OpenSSL can now be tested in the usual way.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Additionally binary compatibility tests against OpenSSL 0.9.8x would be
 | 
				
			||||||
 | 
					MOST welcomed. This will help avoid any major issues when the 0.9.8-fips
 | 
				
			||||||
 | 
					branch is merged into 0.9.8 branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Any problems should be reported to the openssl-dev mailing list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										289
									
								
								TABLE
									
									
									
									
									
								
							
							
						
						
									
										289
									
								
								TABLE
									
									
									
									
									
								
							@@ -117,14 +117,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -145,10 +145,10 @@ $lflags       =
 | 
				
			|||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = 
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv9.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -171,8 +171,8 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
 | 
					$bn_ops       = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
@@ -198,7 +198,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-out.o
 | 
					$cpuid_obj    = x86cpuid-out.o
 | 
				
			||||||
$bn_obj       = bn86-out.o co86-out.o
 | 
					$bn_obj       = bn86-out.o co86-out.o mo86-out.o
 | 
				
			||||||
$des_obj      = dx86-out.o yx86-out.o
 | 
					$des_obj      = dx86-out.o yx86-out.o
 | 
				
			||||||
$aes_obj      = ax86-out.o
 | 
					$aes_obj      = ax86-out.o
 | 
				
			||||||
$bf_obj       = bx86-out.o
 | 
					$bf_obj       = bx86-out.o
 | 
				
			||||||
@@ -225,7 +225,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -252,12 +252,12 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-x86_64.o
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-x86_64.o
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
@@ -279,7 +279,7 @@ $sys_id       = CYGWIN32
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-cof.o
 | 
					$cpuid_obj    = x86cpuid-cof.o
 | 
				
			||||||
$bn_obj       = bn86-cof.o co86-cof.o
 | 
					$bn_obj       = bn86-cof.o co86-cof.o mo86-cof.o
 | 
				
			||||||
$des_obj      = dx86-cof.o yx86-cof.o
 | 
					$des_obj      = dx86-cof.o yx86-cof.o
 | 
				
			||||||
$aes_obj      = ax86-cof.o
 | 
					$aes_obj      = ax86-cof.o
 | 
				
			||||||
$bf_obj       = bx86-cof.o
 | 
					$bf_obj       = bx86-cof.o
 | 
				
			||||||
@@ -333,7 +333,7 @@ $sys_id       = MSDOS
 | 
				
			|||||||
$lflags       = -L/dev/env/WATT_ROOT/lib -lwatt
 | 
					$lflags       = -L/dev/env/WATT_ROOT/lib -lwatt
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-out.o
 | 
					$cpuid_obj    = x86cpuid-out.o
 | 
				
			||||||
$bn_obj       = bn86-out.o co86-out.o
 | 
					$bn_obj       = bn86-out.o co86-out.o mo86-out.o
 | 
				
			||||||
$des_obj      = dx86-out.o yx86-out.o
 | 
					$des_obj      = dx86-out.o yx86-out.o
 | 
				
			||||||
$aes_obj      = ax86-out.o
 | 
					$aes_obj      = ax86-out.o
 | 
				
			||||||
$bf_obj       = bx86-out.o
 | 
					$bf_obj       = bx86-out.o
 | 
				
			||||||
@@ -677,14 +677,14 @@ $arflags      =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** aix-cc
 | 
					*** aix-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -q32 -O -DB_ENDIAN -qmaxmem=16384
 | 
					$cflags       = -q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -qthreaded
 | 
					$thread_cflag = -qthreaded
 | 
				
			||||||
$sys_id       = AIX
 | 
					$sys_id       = AIX
 | 
				
			||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = aix_ppc32.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -711,7 +711,7 @@ $sys_id       = AIX
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = aix_ppc32.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -722,12 +722,12 @@ $rc4_obj      =
 | 
				
			|||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
$shared_target= 
 | 
					$shared_target= aix-shared
 | 
				
			||||||
$shared_cflag = 
 | 
					$shared_cflag = 
 | 
				
			||||||
$shared_ldflag = 
 | 
					$shared_ldflag = 
 | 
				
			||||||
$shared_extension = 
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
$ranlib       = 
 | 
					$ranlib       = 
 | 
				
			||||||
$arflags      = 
 | 
					$arflags      = -X 32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** aix3-cc
 | 
					*** aix3-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
@@ -758,14 +758,14 @@ $arflags      =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** aix64-cc
 | 
					*** aix64-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -q64 -O -DB_ENDIAN -qmaxmem=16384
 | 
					$cflags       = -q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -qthreaded
 | 
					$thread_cflag = -qthreaded
 | 
				
			||||||
$sys_id       = AIX
 | 
					$sys_id       = AIX
 | 
				
			||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = aix_ppc64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -792,7 +792,7 @@ $sys_id       = AIX
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = aix_ppc64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -803,10 +803,10 @@ $rc4_obj      =
 | 
				
			|||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
$shared_target= 
 | 
					$shared_target= aix-shared
 | 
				
			||||||
$shared_cflag = 
 | 
					$shared_cflag = 
 | 
				
			||||||
$shared_ldflag = 
 | 
					$shared_ldflag = -maix64
 | 
				
			||||||
$shared_extension = 
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
$ranlib       = 
 | 
					$ranlib       = 
 | 
				
			||||||
$arflags      = -X64
 | 
					$arflags      = -X64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -846,7 +846,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -951,7 +951,7 @@ $cflags       = -O3 -fomit-frame-pointer -fno-common
 | 
				
			|||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = MACOSX
 | 
					$sys_id       = MACOSX
 | 
				
			||||||
$lflags       = 
 | 
					$lflags       = -Wl,-search_paths_first%
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = 
 | 
					$bn_obj       = 
 | 
				
			||||||
@@ -978,10 +978,10 @@ $cflags       = -O3 -DB_ENDIAN
 | 
				
			|||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = MACOSX
 | 
					$sys_id       = MACOSX
 | 
				
			||||||
$lflags       = -Wl,-search_paths_first
 | 
					$lflags       = -Wl,-search_paths_first%
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = osx_ppc32.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -1035,7 +1035,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1224,7 +1224,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1251,7 +1251,7 @@ $sys_id       = MACOSX
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = osx_ppc32.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -1305,7 +1305,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1332,7 +1332,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1413,7 +1413,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lefence -ldl
 | 
					$lflags       = -lefence -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1440,7 +1440,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1467,7 +1467,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1494,7 +1494,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1521,7 +1521,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1548,7 +1548,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -1575,7 +1575,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -1602,11 +1602,11 @@ $sys_id       = ULTRASPARC
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8plus.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv8plus.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -1629,11 +1629,11 @@ $sys_id       = ULTRASPARC
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8plus.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv8plus.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -1649,14 +1649,14 @@ $arflags      =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** debug-steve
 | 
					*** debug-steve
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -march=i486 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
 | 
					$cflags       = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -rdynamic -ldl
 | 
					$lflags       = -rdynamic -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1818,7 +1818,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lnsl -lsocket
 | 
					$lflags       = -lnsl -lsocket
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -1953,14 +1953,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -1980,14 +1980,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2115,7 +2115,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -Wl,+s -ldld
 | 
					$lflags       = -Wl,+s -ldld
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = pa-risc2.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2142,7 +2142,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -Wl,+s -ldld
 | 
					$lflags       = -Wl,+s -ldld
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1
 | 
					$bn_ops       = SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = pa-risc2.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2169,14 +2169,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2196,14 +2196,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2223,7 +2223,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = pa-risc2W.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2250,7 +2250,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = pa-risc2W.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2277,7 +2277,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -2351,14 +2351,14 @@ $arflags      =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** irix-mips3-cc
 | 
					*** irix-mips3-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -n32 -mips3 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W
 | 
					$cflags       = -n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_SGI_MP_SOURCE
 | 
					$thread_cflag = -D_SGI_MP_SOURCE
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT
 | 
					$bn_ops       = DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-mips3.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2385,7 +2385,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT
 | 
					$bn_ops       = MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-mips3.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2405,14 +2405,14 @@ $arflags      =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** irix64-mips4-cc
 | 
					*** irix64-mips4-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -64 -mips4 -O2 -use_readonly_const -DTERMIOS -DB_ENDIAN -DBN_DIV3W
 | 
					$cflags       = -64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_SGI_MP_SOURCE
 | 
					$thread_cflag = -D_SGI_MP_SOURCE
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 | 
					$bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-mips3.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2439,7 +2439,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 | 
					$bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-mips3.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2574,7 +2574,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = 
 | 
					$lflags       = 
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-out.o
 | 
					$cpuid_obj    = x86cpuid-out.o
 | 
				
			||||||
$bn_obj       = bn86-out.o co86-out.o
 | 
					$bn_obj       = bn86-out.o co86-out.o mo86-out.o
 | 
				
			||||||
$des_obj      = dx86-out.o yx86-out.o
 | 
					$des_obj      = dx86-out.o yx86-out.o
 | 
				
			||||||
$aes_obj      = ax86-out.o
 | 
					$aes_obj      = ax86-out.o
 | 
				
			||||||
$bf_obj       = bx86-out.o
 | 
					$bf_obj       = bx86-out.o
 | 
				
			||||||
@@ -2601,7 +2601,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -2682,7 +2682,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -2709,14 +2709,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2736,14 +2736,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2763,14 +2763,14 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = bn-ia64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-ia64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$dso_scheme   = dlfcn
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
@@ -2790,7 +2790,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = linux_ppc32.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2817,7 +2817,34 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = linux_ppc64.o
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = -m64
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** linux-s390x
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -m64 -DB_ENDIAN -DTERMIO -O3 -Wall
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -ldl
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
@@ -2844,8 +2871,8 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
@@ -2871,11 +2898,11 @@ $sys_id       = ULTRASPARC
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8plus.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv8plus.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -2898,12 +2925,12 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-x86_64.o
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-x86_64.o
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
@@ -2926,10 +2953,10 @@ $lflags       = -ldl
 | 
				
			|||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = 
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv9.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -2952,7 +2979,7 @@ $sys_id       = MINGW32
 | 
				
			|||||||
$lflags       = -lwsock32 -lgdi32
 | 
					$lflags       = -lwsock32 -lgdi32
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
 | 
				
			||||||
$cpuid_obj    = x86cpuid-cof.o
 | 
					$cpuid_obj    = x86cpuid-cof.o
 | 
				
			||||||
$bn_obj       = bn86-cof.o co86-cof.o
 | 
					$bn_obj       = bn86-cof.o co86-cof.o mo86-cof.o
 | 
				
			||||||
$des_obj      = dx86-cof.o yx86-cof.o
 | 
					$des_obj      = dx86-cof.o yx86-cof.o
 | 
				
			||||||
$aes_obj      = ax86-cof.o
 | 
					$aes_obj      = ax86-cof.o
 | 
				
			||||||
$bf_obj       = bx86-cof.o
 | 
					$bf_obj       = bx86-cof.o
 | 
				
			||||||
@@ -3357,7 +3384,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl
 | 
					$lflags       = -lsocket -lnsl
 | 
				
			||||||
$bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -3384,7 +3411,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl
 | 
					$lflags       = -lsocket -lnsl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -3465,8 +3492,8 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
@@ -3492,8 +3519,8 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = 
 | 
					$md5_obj      = 
 | 
				
			||||||
@@ -3519,11 +3546,11 @@ $sys_id       = ULTRASPARC
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8plus.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv8plus.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -3546,11 +3573,11 @@ $sys_id       = ULTRASPARC
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = sparcv8plus.o
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv8plus.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -3600,7 +3627,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -3628,10 +3655,10 @@ $lflags       = -lsocket -lnsl -ldl
 | 
				
			|||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = 
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv9.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -3655,10 +3682,10 @@ $lflags       = -lsocket -lnsl -ldl
 | 
				
			|||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 | 
				
			||||||
$cpuid_obj    = 
 | 
					$cpuid_obj    = 
 | 
				
			||||||
$bn_obj       = 
 | 
					$bn_obj       = 
 | 
				
			||||||
$des_obj      = des_enc-sparc.o fcrypt_b.o
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = 
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-sparcv9.o
 | 
					$md5_obj      = 
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = 
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = 
 | 
					$rc4_obj      = 
 | 
				
			||||||
@@ -3681,12 +3708,12 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-x86_64.o
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-x86_64.o
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
@@ -3708,12 +3735,12 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = 
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
$bf_obj       = 
 | 
					$bf_obj       = 
 | 
				
			||||||
$md5_obj      = md5-x86_64.o
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
$sha1_obj     = 
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-x86_64.o
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
@@ -3924,7 +3951,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl
 | 
					$lflags       = -lsocket -lnsl
 | 
				
			||||||
$bn_ops       = BN_LLONG MD2_CHAR RC4_INDEX DES_PTR DES_RISC1 DES_UNROLL
 | 
					$bn_ops       = BN_LLONG MD2_CHAR RC4_INDEX DES_PTR DES_RISC1 DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
@@ -3951,7 +3978,7 @@ $sys_id       =
 | 
				
			|||||||
$lflags       = -lsocket -lnsl
 | 
					$lflags       = -lsocket -lnsl
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
$cpuid_obj    = x86cpuid-elf.o
 | 
					$cpuid_obj    = x86cpuid-elf.o
 | 
				
			||||||
$bn_obj       = bn86-elf.o co86-elf.o
 | 
					$bn_obj       = bn86-elf.o co86-elf.o mo86-elf.o
 | 
				
			||||||
$des_obj      = dx86-elf.o yx86-elf.o
 | 
					$des_obj      = dx86-elf.o yx86-elf.o
 | 
				
			||||||
$aes_obj      = ax86-elf.o
 | 
					$aes_obj      = ax86-elf.o
 | 
				
			||||||
$bf_obj       = bx86-elf.o
 | 
					$bf_obj       = bx86-elf.o
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										933
									
								
								apps/Makefile
									
									
									
									
									
								
							
							
						
						
									
										933
									
								
								apps/Makefile
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -2010,7 +2010,7 @@ int parse_yesno(const char *str, int def)
 | 
				
			|||||||
		case 'y': /* yes */
 | 
							case 'y': /* yes */
 | 
				
			||||||
		case 'Y': /* YES */
 | 
							case 'Y': /* YES */
 | 
				
			||||||
		case '1': /* 1 */
 | 
							case '1': /* 1 */
 | 
				
			||||||
			ret = 0;
 | 
								ret = 1;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			ret = def;
 | 
								ret = def;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								apps/apps.h
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								apps/apps.h
									
									
									
									
									
								
							@@ -122,6 +122,9 @@
 | 
				
			|||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
#include <openssl/engine.h>
 | 
					#include <openssl/engine.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_OCSP
 | 
				
			||||||
 | 
					#include <openssl/ocsp.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#include <openssl/ossl_typ.h>
 | 
					#include <openssl/ossl_typ.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn);
 | 
					int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn);
 | 
				
			||||||
@@ -146,9 +149,11 @@ int WIN32_rename(const char *oldname,const char *newname);
 | 
				
			|||||||
#ifndef NON_MAIN
 | 
					#ifndef NON_MAIN
 | 
				
			||||||
CONF *config=NULL;
 | 
					CONF *config=NULL;
 | 
				
			||||||
BIO *bio_err=NULL;
 | 
					BIO *bio_err=NULL;
 | 
				
			||||||
 | 
					int in_FIPS_mode=0;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
extern CONF *config;
 | 
					extern CONF *config;
 | 
				
			||||||
extern BIO *bio_err;
 | 
					extern BIO *bio_err;
 | 
				
			||||||
 | 
					extern int in_FIPS_mode;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@@ -157,6 +162,7 @@ extern BIO *bio_err;
 | 
				
			|||||||
extern CONF *config;
 | 
					extern CONF *config;
 | 
				
			||||||
extern char *default_config_file;
 | 
					extern char *default_config_file;
 | 
				
			||||||
extern BIO *bio_err;
 | 
					extern BIO *bio_err;
 | 
				
			||||||
 | 
					extern int in_FIPS_mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -228,6 +234,12 @@ extern BIO *bio_err;
 | 
				
			|||||||
#  endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_SYSNAME_WIN32
 | 
				
			||||||
 | 
					#  define openssl_fdset(a,b) FD_SET((unsigned int)a, b)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#  define openssl_fdset(a,b) FD_SET(a, b)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct args_st
 | 
					typedef struct args_st
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	char **data;
 | 
						char **data;
 | 
				
			||||||
@@ -275,6 +287,12 @@ X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath);
 | 
				
			|||||||
ENGINE *setup_engine(BIO *err, const char *engine, int debug);
 | 
					ENGINE *setup_engine(BIO *err, const char *engine, int debug);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_OCSP
 | 
				
			||||||
 | 
					OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
				
			||||||
 | 
								char *host, char *path, char *port, int use_ssl,
 | 
				
			||||||
 | 
								int req_timeout);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int load_config(BIO *err, CONF *cnf);
 | 
					int load_config(BIO *err, CONF *cnf);
 | 
				
			||||||
char *make_config_name(void);
 | 
					char *make_config_name(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2882,13 +2882,22 @@ int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str)
 | 
				
			|||||||
	p=(char *)str->data;
 | 
						p=(char *)str->data;
 | 
				
			||||||
	for (j=str->length; j>0; j--)
 | 
						for (j=str->length; j>0; j--)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
					#ifdef CHARSET_EBCDIC
 | 
				
			||||||
 | 
							if ((*p >= 0x20) && (*p <= 0x7e))
 | 
				
			||||||
 | 
								BIO_printf(bp,"%c",os_toebcdic[*p]);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
		if ((*p >= ' ') && (*p <= '~'))
 | 
							if ((*p >= ' ') && (*p <= '~'))
 | 
				
			||||||
			BIO_printf(bp,"%c",*p);
 | 
								BIO_printf(bp,"%c",*p);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else if (*p & 0x80)
 | 
							else if (*p & 0x80)
 | 
				
			||||||
			BIO_printf(bp,"\\0x%02X",*p);
 | 
								BIO_printf(bp,"\\0x%02X",*p);
 | 
				
			||||||
		else if ((unsigned char)*p == 0xf7)
 | 
							else if ((unsigned char)*p == 0xf7)
 | 
				
			||||||
			BIO_printf(bp,"^?");
 | 
								BIO_printf(bp,"^?");
 | 
				
			||||||
 | 
					#ifdef CHARSET_EBCDIC
 | 
				
			||||||
 | 
							else	BIO_printf(bp,"^%c",os_toebcdic[*p+0x40]);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
		else	BIO_printf(bp,"^%c",*p+'@');
 | 
							else	BIO_printf(bp,"^%c",*p+'@');
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		p++;
 | 
							p++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	BIO_printf(bp,"'\n");
 | 
						BIO_printf(bp,"'\n");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1347
									
								
								apps/cms.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1347
									
								
								apps/cms.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										74
									
								
								apps/dgst.c
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								apps/dgst.c
									
									
									
									
									
								
							@@ -76,7 +76,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
					int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
				
			||||||
	  EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
 | 
						  EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
 | 
				
			||||||
	  const char *file,BIO *bmd,const char *hmac_key);
 | 
						  const char *file,BIO *bmd,const char *hmac_key, int non_fips_allow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int, char **);
 | 
					int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -101,14 +101,16 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	EVP_PKEY *sigkey = NULL;
 | 
						EVP_PKEY *sigkey = NULL;
 | 
				
			||||||
	unsigned char *sigbuf = NULL;
 | 
						unsigned char *sigbuf = NULL;
 | 
				
			||||||
	int siglen = 0;
 | 
						int siglen = 0;
 | 
				
			||||||
 | 
						unsigned int sig_flags = 0;
 | 
				
			||||||
	char *passargin = NULL, *passin = NULL;
 | 
						char *passargin = NULL, *passin = NULL;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	char *engine=NULL;
 | 
						char *engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	char *hmac_key=NULL;
 | 
						char *hmac_key=NULL;
 | 
				
			||||||
 | 
						int non_fips_allow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
 | 
					ERR_load_crypto_strings();
 | 
				
			||||||
	if ((buf=(unsigned char *)OPENSSL_malloc(BUFSIZE)) == NULL)
 | 
						if ((buf=(unsigned char *)OPENSSL_malloc(BUFSIZE)) == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"out of memory\n");
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
@@ -167,6 +169,27 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			keyfile=*(++argv);
 | 
								keyfile=*(++argv);
 | 
				
			||||||
			do_verify = 1;
 | 
								do_verify = 1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-x931") == 0)
 | 
				
			||||||
 | 
								sig_flags = EVP_MD_CTX_FLAG_PAD_X931;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-pss_saltlen") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								int saltlen;
 | 
				
			||||||
 | 
								if (--argc < 1) break;
 | 
				
			||||||
 | 
								saltlen=atoi(*(++argv));
 | 
				
			||||||
 | 
								if (saltlen == -1)
 | 
				
			||||||
 | 
									sig_flags = EVP_MD_CTX_FLAG_PSS_MREC;
 | 
				
			||||||
 | 
								else if (saltlen == -2)
 | 
				
			||||||
 | 
									sig_flags = EVP_MD_CTX_FLAG_PSS_MDLEN;
 | 
				
			||||||
 | 
								else if (saltlen < -2 || saltlen >= 0xFFFE)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(bio_err, "Invalid PSS salt length %d\n", saltlen);
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									sig_flags = saltlen;
 | 
				
			||||||
 | 
								sig_flags <<= 16;
 | 
				
			||||||
 | 
								sig_flags |= EVP_MD_CTX_FLAG_PAD_PSS;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-signature") == 0)
 | 
							else if (strcmp(*argv,"-signature") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) break;
 | 
								if (--argc < 1) break;
 | 
				
			||||||
@@ -190,6 +213,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			out_bin = 1;
 | 
								out_bin = 1;
 | 
				
			||||||
		else if (strcmp(*argv,"-d") == 0)
 | 
							else if (strcmp(*argv,"-d") == 0)
 | 
				
			||||||
			debug=1;
 | 
								debug=1;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-non-fips-allow") == 0)
 | 
				
			||||||
 | 
								non_fips_allow=1;
 | 
				
			||||||
 | 
							else if (!strcmp(*argv,"-fips-fingerprint"))
 | 
				
			||||||
 | 
								hmac_key = "etaonrishdlcupfm";
 | 
				
			||||||
		else if (!strcmp(*argv,"-hmac"))
 | 
							else if (!strcmp(*argv,"-hmac"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1)
 | 
								if (--argc < 1)
 | 
				
			||||||
@@ -227,33 +254,38 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf(bio_err,"-keyform arg    key file format (PEM or ENGINE)\n");
 | 
							BIO_printf(bio_err,"-keyform arg    key file format (PEM or ENGINE)\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-signature file signature to verify\n");
 | 
							BIO_printf(bio_err,"-signature file signature to verify\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-binary         output in binary form\n");
 | 
							BIO_printf(bio_err,"-binary         output in binary form\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-hmac key       create hashed MAC with key\n");
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
		BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
 | 
							BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm (default)\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm (default)\n",
 | 
				
			||||||
			LN_md5,LN_md5);
 | 
								LN_md5,LN_md5);
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_md4,LN_md4);
 | 
								LN_md4,LN_md4);
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_md2,LN_md2);
 | 
								LN_md2,LN_md2);
 | 
				
			||||||
#ifndef OPENSSL_NO_SHA
 | 
					#ifndef OPENSSL_NO_SHA
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_sha1,LN_sha1);
 | 
								LN_sha1,LN_sha1);
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_sha,LN_sha);
 | 
								LN_sha,LN_sha);
 | 
				
			||||||
#ifndef OPENSSL_NO_SHA256
 | 
					#ifndef OPENSSL_NO_SHA256
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
 | 
								LN_sha224,LN_sha224);
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_sha256,LN_sha256);
 | 
								LN_sha256,LN_sha256);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_SHA512
 | 
					#ifndef OPENSSL_NO_SHA512
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
 | 
								LN_sha384,LN_sha384);
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_sha512,LN_sha512);
 | 
								LN_sha512,LN_sha512);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_mdc2,LN_mdc2);
 | 
								LN_mdc2,LN_mdc2);
 | 
				
			||||||
		BIO_printf(bio_err,"-%3s to use the %s message digest algorithm\n",
 | 
							BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
			LN_ripemd160,LN_ripemd160);
 | 
								LN_ripemd160,LN_ripemd160);
 | 
				
			||||||
		err=1;
 | 
							err=1;
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
@@ -349,8 +381,20 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (non_fips_allow)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							EVP_MD_CTX *md_ctx;
 | 
				
			||||||
 | 
							BIO_get_md_ctx(bmd,&md_ctx);
 | 
				
			||||||
 | 
							EVP_MD_CTX_set_flags(md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (sig_flags)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							EVP_MD_CTX *md_ctx;
 | 
				
			||||||
 | 
							BIO_get_md_ctx(bmd,&md_ctx);
 | 
				
			||||||
 | 
							EVP_MD_CTX_set_flags(md_ctx, sig_flags);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* we use md as a filter, reading from 'in' */
 | 
						/* we use md as a filter, reading from 'in' */
 | 
				
			||||||
	if (!BIO_set_md(bmd,md))
 | 
						if (!BIO_set_md(bmd,md))
 | 
				
			||||||
@@ -366,7 +410,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_set_fp(in,stdin,BIO_NOCLOSE);
 | 
							BIO_set_fp(in,stdin,BIO_NOCLOSE);
 | 
				
			||||||
		err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf,
 | 
							err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf,
 | 
				
			||||||
			  siglen,"","(stdin)",bmd,hmac_key);
 | 
								  siglen,"","(stdin)",bmd,hmac_key,non_fips_allow);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -392,7 +436,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			else
 | 
								else
 | 
				
			||||||
				tmp="";
 | 
									tmp="";
 | 
				
			||||||
			r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf,
 | 
								r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf,
 | 
				
			||||||
				siglen,tmp,argv[i],bmd,hmac_key);
 | 
									siglen,tmp,argv[i],bmd,hmac_key,non_fips_allow);
 | 
				
			||||||
			if(r)
 | 
								if(r)
 | 
				
			||||||
			    err=r;
 | 
								    err=r;
 | 
				
			||||||
			if(tofree)
 | 
								if(tofree)
 | 
				
			||||||
@@ -419,7 +463,7 @@ end:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
					int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
				
			||||||
	  EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
 | 
						  EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
 | 
				
			||||||
	  const char *file,BIO *bmd,const char *hmac_key)
 | 
						  const char *file,BIO *bmd,const char *hmac_key,int non_fips_allow)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	unsigned int len;
 | 
						unsigned int len;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										42
									
								
								apps/dsa.c
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								apps/dsa.c
									
									
									
									
									
								
							@@ -87,6 +87,7 @@
 | 
				
			|||||||
 * -camellia128 - encrypt output if PEM format
 | 
					 * -camellia128 - encrypt output if PEM format
 | 
				
			||||||
 * -camellia192 - encrypt output if PEM format
 | 
					 * -camellia192 - encrypt output if PEM format
 | 
				
			||||||
 * -camellia256 - encrypt output if PEM format
 | 
					 * -camellia256 - encrypt output if PEM format
 | 
				
			||||||
 | 
					 * -seed        - encrypt output if PEM format
 | 
				
			||||||
 * -text	- print a text version
 | 
					 * -text	- print a text version
 | 
				
			||||||
 * -modulus	- print the DSA public key
 | 
					 * -modulus	- print the DSA public key
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -218,6 +219,9 @@ bad:
 | 
				
			|||||||
#ifndef OPENSSL_NO_CAMELLIA
 | 
					#ifndef OPENSSL_NO_CAMELLIA
 | 
				
			||||||
		BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
 | 
							BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n");
 | 
				
			||||||
		BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc camellia\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							BIO_printf(bio_err," -seed           encrypt PEM output with cbc seed\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		BIO_printf(bio_err," -text           print the key in text\n");
 | 
							BIO_printf(bio_err," -text           print the key in text\n");
 | 
				
			||||||
		BIO_printf(bio_err," -noout          don't print key out\n");
 | 
							BIO_printf(bio_err," -noout          don't print key out\n");
 | 
				
			||||||
@@ -236,37 +240,27 @@ bad:
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	in=BIO_new(BIO_s_file());
 | 
					 | 
				
			||||||
	out=BIO_new(BIO_s_file());
 | 
						out=BIO_new(BIO_s_file());
 | 
				
			||||||
	if ((in == NULL) || (out == NULL))
 | 
						if (out == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (infile == NULL)
 | 
					 | 
				
			||||||
		BIO_set_fp(in,stdin,BIO_NOCLOSE);
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		if (BIO_read_filename(in,infile) <= 0)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			perror(infile);
 | 
					 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	BIO_printf(bio_err,"read DSA key\n");
 | 
						BIO_printf(bio_err,"read DSA key\n");
 | 
				
			||||||
	if	(informat == FORMAT_ASN1) {
 | 
						{
 | 
				
			||||||
		if(pubin) dsa=d2i_DSA_PUBKEY_bio(in,NULL);
 | 
							EVP_PKEY	*pkey;
 | 
				
			||||||
		else dsa=d2i_DSAPrivateKey_bio(in,NULL);
 | 
							if (pubin)
 | 
				
			||||||
	} else if (informat == FORMAT_PEM) {
 | 
								pkey = load_pubkey(bio_err, infile, informat, 1,
 | 
				
			||||||
		if(pubin) dsa=PEM_read_bio_DSA_PUBKEY(in,NULL, NULL, NULL);
 | 
									passin, e, "Public Key");
 | 
				
			||||||
		else dsa=PEM_read_bio_DSAPrivateKey(in,NULL,NULL,passin);
 | 
							else
 | 
				
			||||||
	} else
 | 
								pkey = load_key(bio_err, infile, informat, 1,
 | 
				
			||||||
		{
 | 
									passin, e, "Private Key");
 | 
				
			||||||
		BIO_printf(bio_err,"bad input format specified for key\n");
 | 
					
 | 
				
			||||||
		goto end;
 | 
							if (pkey != NULL)
 | 
				
			||||||
		}
 | 
							dsa = pkey == NULL ? NULL : EVP_PKEY_get1_DSA(pkey);
 | 
				
			||||||
 | 
							EVP_PKEY_free(pkey);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if (dsa == NULL)
 | 
						if (dsa == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"unable to load Key\n");
 | 
							BIO_printf(bio_err,"unable to load Key\n");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -244,7 +244,7 @@ bad:
 | 
				
			|||||||
				" the ec parameters are encoded\n");
 | 
									" the ec parameters are encoded\n");
 | 
				
			||||||
		BIO_printf(bio_err, "                 in the asn1 der "
 | 
							BIO_printf(bio_err, "                 in the asn1 der "
 | 
				
			||||||
				"encoding\n");
 | 
									"encoding\n");
 | 
				
			||||||
		BIO_printf(bio_err, "                 possilbe values:"
 | 
							BIO_printf(bio_err, "                 possible values:"
 | 
				
			||||||
				" named_curve (default)\n");
 | 
									" named_curve (default)\n");
 | 
				
			||||||
		BIO_printf(bio_err,"                                  "
 | 
							BIO_printf(bio_err,"                                  "
 | 
				
			||||||
				"explicit\n");
 | 
									"explicit\n");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								apps/enc.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								apps/enc.c
									
									
									
									
									
								
							@@ -127,6 +127,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	char *engine = NULL;
 | 
						char *engine = NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	const EVP_MD *dgst=NULL;
 | 
						const EVP_MD *dgst=NULL;
 | 
				
			||||||
 | 
						int non_fips_allow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -261,6 +262,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			md= *(++argv);
 | 
								md= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-non-fips-allow") == 0)
 | 
				
			||||||
 | 
								non_fips_allow = 1;
 | 
				
			||||||
		else if	((argv[0][0] == '-') &&
 | 
							else if	((argv[0][0] == '-') &&
 | 
				
			||||||
			((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL))
 | 
								((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -314,7 +317,10 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (dgst == NULL)
 | 
						if (dgst == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		dgst = EVP_md5();
 | 
							if (in_FIPS_mode)
 | 
				
			||||||
 | 
								dgst = EVP_sha1();
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								dgst = EVP_md5();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bufsize != NULL)
 | 
						if (bufsize != NULL)
 | 
				
			||||||
@@ -549,6 +555,11 @@ bad:
 | 
				
			|||||||
		 */
 | 
							 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BIO_get_cipher_ctx(benc, &ctx);
 | 
							BIO_get_cipher_ctx(benc, &ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (non_fips_allow)
 | 
				
			||||||
 | 
								EVP_CIPHER_CTX_set_flags(ctx,
 | 
				
			||||||
 | 
									EVP_CIPH_FLAG_NON_FIPS_ALLOW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))
 | 
							if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err, "Error setting cipher %s\n",
 | 
								BIO_printf(bio_err, "Error setting cipher %s\n",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -140,6 +140,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-idea") == 0)
 | 
							else if (strcmp(*argv,"-idea") == 0)
 | 
				
			||||||
			enc=EVP_idea_cbc();
 | 
								enc=EVP_idea_cbc();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-seed") == 0)
 | 
				
			||||||
 | 
								enc=EVP_seed_cbc();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		else if (strcmp(*argv,"-aes128") == 0)
 | 
							else if (strcmp(*argv,"-aes128") == 0)
 | 
				
			||||||
			enc=EVP_aes_128_cbc();
 | 
								enc=EVP_aes_128_cbc();
 | 
				
			||||||
@@ -178,6 +182,10 @@ bad:
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
		BIO_printf(bio_err," -idea     - encrypt the generated key with IDEA in cbc mode\n");
 | 
							BIO_printf(bio_err," -idea     - encrypt the generated key with IDEA in cbc mode\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							BIO_printf(bio_err," -seed\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc seed\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
							BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
				
			||||||
		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,6 +95,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	int i,num=DEFBITS;
 | 
						int i,num=DEFBITS;
 | 
				
			||||||
	long l;
 | 
						long l;
 | 
				
			||||||
 | 
						int use_x931 = 0;
 | 
				
			||||||
	const EVP_CIPHER *enc=NULL;
 | 
						const EVP_CIPHER *enc=NULL;
 | 
				
			||||||
	unsigned long f4=RSA_F4;
 | 
						unsigned long f4=RSA_F4;
 | 
				
			||||||
	char *outfile=NULL;
 | 
						char *outfile=NULL;
 | 
				
			||||||
@@ -138,6 +139,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			f4=3;
 | 
								f4=3;
 | 
				
			||||||
		else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
 | 
							else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
 | 
				
			||||||
			f4=RSA_F4;
 | 
								f4=RSA_F4;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-x931") == 0)
 | 
				
			||||||
 | 
								use_x931 = 1;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
		else if (strcmp(*argv,"-engine") == 0)
 | 
							else if (strcmp(*argv,"-engine") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -160,6 +163,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-idea") == 0)
 | 
							else if (strcmp(*argv,"-idea") == 0)
 | 
				
			||||||
			enc=EVP_idea_cbc();
 | 
								enc=EVP_idea_cbc();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-seed") == 0)
 | 
				
			||||||
 | 
								enc=EVP_seed_cbc();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		else if (strcmp(*argv,"-aes128") == 0)
 | 
							else if (strcmp(*argv,"-aes128") == 0)
 | 
				
			||||||
			enc=EVP_aes_128_cbc();
 | 
								enc=EVP_aes_128_cbc();
 | 
				
			||||||
@@ -195,6 +202,10 @@ bad:
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
		BIO_printf(bio_err," -idea           encrypt the generated key with IDEA in cbc mode\n");
 | 
							BIO_printf(bio_err," -idea           encrypt the generated key with IDEA in cbc mode\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							BIO_printf(bio_err," -seed\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc seed\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
							BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
				
			||||||
		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
				
			||||||
@@ -258,7 +269,17 @@ bad:
 | 
				
			|||||||
	BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
 | 
						BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
 | 
				
			||||||
		num);
 | 
							num);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
 | 
						if (use_x931)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIGNUM *pubexp;
 | 
				
			||||||
 | 
							pubexp = BN_new();
 | 
				
			||||||
 | 
							if (!BN_set_word(pubexp, f4))
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
							if (!RSA_X931_generate_key_ex(rsa, num, pubexp, &cb))
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
							BN_free(pubexp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	app_RAND_write_file(NULL, bio_err);
 | 
						app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										214
									
								
								apps/ocsp.c
									
									
									
									
									
								
							
							
						
						
									
										214
									
								
								apps/ocsp.c
									
									
									
									
									
								
							@@ -56,15 +56,14 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef OPENSSL_NO_OCSP
 | 
					#ifndef OPENSSL_NO_OCSP
 | 
				
			||||||
 | 
					#define USE_SOCKETS
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include "apps.h"
 | 
					#include "apps.h" /* needs to be included before the openssl headers! */
 | 
				
			||||||
#include <openssl/pem.h>
 | 
					#include <openssl/e_os2.h>
 | 
				
			||||||
#include <openssl/ocsp.h>
 | 
					 | 
				
			||||||
#include <openssl/err.h>
 | 
					 | 
				
			||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
#include <openssl/bn.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Maximum leeway in validity period: default 5 minutes */
 | 
					/* Maximum leeway in validity period: default 5 minutes */
 | 
				
			||||||
#define MAX_VALIDITY_PERIOD	(5 * 60)
 | 
					#define MAX_VALIDITY_PERIOD	(5 * 60)
 | 
				
			||||||
@@ -86,6 +85,8 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser);
 | 
				
			|||||||
static BIO *init_responder(char *port);
 | 
					static BIO *init_responder(char *port);
 | 
				
			||||||
static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, char *port);
 | 
					static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, char *port);
 | 
				
			||||||
static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp);
 | 
					static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp);
 | 
				
			||||||
 | 
					static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			||||||
 | 
									OCSP_REQUEST *req, int req_timeout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef PROG
 | 
					#undef PROG
 | 
				
			||||||
#define PROG ocsp_main
 | 
					#define PROG ocsp_main
 | 
				
			||||||
@@ -112,11 +113,11 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	BIO *acbio = NULL, *cbio = NULL;
 | 
						BIO *acbio = NULL, *cbio = NULL;
 | 
				
			||||||
	BIO *derbio = NULL;
 | 
						BIO *derbio = NULL;
 | 
				
			||||||
	BIO *out = NULL;
 | 
						BIO *out = NULL;
 | 
				
			||||||
 | 
						int req_timeout = -1;
 | 
				
			||||||
	int req_text = 0, resp_text = 0;
 | 
						int req_text = 0, resp_text = 0;
 | 
				
			||||||
	long nsec = MAX_VALIDITY_PERIOD, maxage = -1;
 | 
						long nsec = MAX_VALIDITY_PERIOD, maxage = -1;
 | 
				
			||||||
	char *CAfile = NULL, *CApath = NULL;
 | 
						char *CAfile = NULL, *CApath = NULL;
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
						X509_STORE *store = NULL;
 | 
				
			||||||
	SSL_CTX *ctx = NULL;
 | 
					 | 
				
			||||||
	STACK_OF(X509) *sign_other = NULL, *verify_other = NULL, *rother = NULL;
 | 
						STACK_OF(X509) *sign_other = NULL, *verify_other = NULL, *rother = NULL;
 | 
				
			||||||
	char *sign_certfile = NULL, *verify_certfile = NULL, *rcertfile = NULL;
 | 
						char *sign_certfile = NULL, *verify_certfile = NULL, *rcertfile = NULL;
 | 
				
			||||||
	unsigned long sign_flags = 0, verify_flags = 0, rflags = 0;
 | 
						unsigned long sign_flags = 0, verify_flags = 0, rflags = 0;
 | 
				
			||||||
@@ -154,6 +155,22 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			else badarg = 1;
 | 
								else badarg = 1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (!strcmp(*args, "-timeout"))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (args[1])
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									args++;
 | 
				
			||||||
 | 
									req_timeout = atol(*args);
 | 
				
			||||||
 | 
									if (req_timeout < 0)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										BIO_printf(bio_err,
 | 
				
			||||||
 | 
											"Illegal timeout value %s\n",
 | 
				
			||||||
 | 
											*args);
 | 
				
			||||||
 | 
										badarg = 1;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								else badarg = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if (!strcmp(*args, "-url"))
 | 
							else if (!strcmp(*args, "-url"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (args[1])
 | 
								if (args[1])
 | 
				
			||||||
@@ -703,52 +720,14 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	else if (host)
 | 
						else if (host)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifndef OPENSSL_NO_SOCK
 | 
					#ifndef OPENSSL_NO_SOCK
 | 
				
			||||||
		cbio = BIO_new_connect(host);
 | 
							resp = process_responder(bio_err, req, host, path,
 | 
				
			||||||
 | 
											port, use_ssl, req_timeout);
 | 
				
			||||||
 | 
							if (!resp)
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
		BIO_printf(bio_err, "Error creating connect BIO - sockets not supported.\n");
 | 
							BIO_printf(bio_err, "Error creating connect BIO - sockets not supported.\n");
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		if (!cbio)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			BIO_printf(bio_err, "Error creating connect BIO\n");
 | 
					 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		if (port) BIO_set_conn_port(cbio, port);
 | 
					 | 
				
			||||||
		if (use_ssl == 1)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			BIO *sbio;
 | 
					 | 
				
			||||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
					 | 
				
			||||||
			ctx = SSL_CTX_new(SSLv23_client_method());
 | 
					 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL3)
 | 
					 | 
				
			||||||
			ctx = SSL_CTX_new(SSLv3_client_method());
 | 
					 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL2)
 | 
					 | 
				
			||||||
			ctx = SSL_CTX_new(SSLv2_client_method());
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
			BIO_printf(bio_err, "SSL is disabled\n");
 | 
					 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
			if (ctx == NULL)
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
				BIO_printf(bio_err, "Error creating SSL context.\n");
 | 
					 | 
				
			||||||
				goto end;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
 | 
					 | 
				
			||||||
			sbio = BIO_new_ssl(ctx, 1);
 | 
					 | 
				
			||||||
			cbio = BIO_push(sbio, cbio);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		if (BIO_do_connect(cbio) <= 0)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			BIO_printf(bio_err, "Error connecting BIO\n");
 | 
					 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		resp = OCSP_sendreq_bio(cbio, path, req);
 | 
					 | 
				
			||||||
		BIO_free_all(cbio);
 | 
					 | 
				
			||||||
		cbio = NULL;
 | 
					 | 
				
			||||||
		if (!resp)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			BIO_printf(bio_err, "Error querying OCSP responsder\n");
 | 
					 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else if (respin)
 | 
						else if (respin)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -897,7 +876,6 @@ end:
 | 
				
			|||||||
		OPENSSL_free(host);
 | 
							OPENSSL_free(host);
 | 
				
			||||||
		OPENSSL_free(port);
 | 
							OPENSSL_free(port);
 | 
				
			||||||
		OPENSSL_free(path);
 | 
							OPENSSL_free(path);
 | 
				
			||||||
		SSL_CTX_free(ctx);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
@@ -1121,6 +1099,7 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser)
 | 
				
			|||||||
	char *itmp, *row[DB_NUMBER],**rrow;
 | 
						char *itmp, *row[DB_NUMBER],**rrow;
 | 
				
			||||||
	for (i = 0; i < DB_NUMBER; i++) row[i] = NULL;
 | 
						for (i = 0; i < DB_NUMBER; i++) row[i] = NULL;
 | 
				
			||||||
	bn = ASN1_INTEGER_to_BN(ser,NULL);
 | 
						bn = ASN1_INTEGER_to_BN(ser,NULL);
 | 
				
			||||||
 | 
						OPENSSL_assert(bn); /* FIXME: should report an error at this point and abort */
 | 
				
			||||||
	if (BN_is_zero(bn))
 | 
						if (BN_is_zero(bn))
 | 
				
			||||||
		itmp = BUF_strdup("00");
 | 
							itmp = BUF_strdup("00");
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
@@ -1227,8 +1206,141 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
 | 
				
			|||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	BIO_printf(cbio, http_resp, i2d_OCSP_RESPONSE(resp, NULL));
 | 
						BIO_printf(cbio, http_resp, i2d_OCSP_RESPONSE(resp, NULL));
 | 
				
			||||||
	i2d_OCSP_RESPONSE_bio(cbio, resp);
 | 
						i2d_OCSP_RESPONSE_bio(cbio, resp);
 | 
				
			||||||
	BIO_flush(cbio);
 | 
						(void)BIO_flush(cbio);
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			||||||
 | 
									OCSP_REQUEST *req, int req_timeout)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						int fd;
 | 
				
			||||||
 | 
						int rv;
 | 
				
			||||||
 | 
						OCSP_REQ_CTX *ctx = NULL;
 | 
				
			||||||
 | 
						OCSP_RESPONSE *rsp = NULL;
 | 
				
			||||||
 | 
						fd_set confds;
 | 
				
			||||||
 | 
						struct timeval tv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (req_timeout != -1)
 | 
				
			||||||
 | 
							BIO_set_nbio(cbio, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rv = BIO_do_connect(cbio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio)))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(err, "Error connecting BIO\n");
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (req_timeout == -1)
 | 
				
			||||||
 | 
							return OCSP_sendreq_bio(cbio, path, req);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (BIO_get_fd(cbio, &fd) <= 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(err, "Can't get connection fd\n");
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (rv <= 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							FD_ZERO(&confds);
 | 
				
			||||||
 | 
							openssl_fdset(fd, &confds);
 | 
				
			||||||
 | 
							tv.tv_usec = 0;
 | 
				
			||||||
 | 
							tv.tv_sec = req_timeout;
 | 
				
			||||||
 | 
							rv = select(fd + 1, NULL, (void *)&confds, NULL, &tv);
 | 
				
			||||||
 | 
							if (rv == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(err, "Timeout on connect\n");
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx = OCSP_sendreq_new(cbio, path, req, -1);
 | 
				
			||||||
 | 
						if (!ctx)
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						for (;;)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							rv = OCSP_sendreq_nbio(&rsp, ctx);
 | 
				
			||||||
 | 
							if (rv != -1)
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							FD_ZERO(&confds);
 | 
				
			||||||
 | 
							openssl_fdset(fd, &confds);
 | 
				
			||||||
 | 
							tv.tv_usec = 0;
 | 
				
			||||||
 | 
							tv.tv_sec = req_timeout;
 | 
				
			||||||
 | 
							if (BIO_should_read(cbio))
 | 
				
			||||||
 | 
								rv = select(fd + 1, (void *)&confds, NULL, NULL, &tv);
 | 
				
			||||||
 | 
							else if (BIO_should_write(cbio))
 | 
				
			||||||
 | 
								rv = select(fd + 1, NULL, (void *)&confds, NULL, &tv);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(err, "Unexpected retry condition\n");
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (rv == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(err, "Timeout on request\n");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (rv == -1)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(err, "Select error\n");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						err:
 | 
				
			||||||
 | 
						if (ctx)
 | 
				
			||||||
 | 
							OCSP_REQ_CTX_free(ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return rsp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
				
			||||||
 | 
								char *host, char *path, char *port, int use_ssl,
 | 
				
			||||||
 | 
								int req_timeout)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BIO *cbio = NULL;
 | 
				
			||||||
 | 
						SSL_CTX *ctx = NULL;
 | 
				
			||||||
 | 
						OCSP_RESPONSE *resp = NULL;
 | 
				
			||||||
 | 
						cbio = BIO_new_connect(host);
 | 
				
			||||||
 | 
						if (!cbio)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(err, "Error creating connect BIO\n");
 | 
				
			||||||
 | 
							goto end;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (port) BIO_set_conn_port(cbio, port);
 | 
				
			||||||
 | 
						if (use_ssl == 1)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO *sbio;
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
				
			||||||
 | 
							ctx = SSL_CTX_new(SSLv23_client_method());
 | 
				
			||||||
 | 
					#elif !defined(OPENSSL_NO_SSL3)
 | 
				
			||||||
 | 
							ctx = SSL_CTX_new(SSLv3_client_method());
 | 
				
			||||||
 | 
					#elif !defined(OPENSSL_NO_SSL2)
 | 
				
			||||||
 | 
							ctx = SSL_CTX_new(SSLv2_client_method());
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							BIO_printf(err, "SSL is disabled\n");
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							if (ctx == NULL)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(err, "Error creating SSL context.\n");
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
 | 
				
			||||||
 | 
							sbio = BIO_new_ssl(ctx, 1);
 | 
				
			||||||
 | 
							cbio = BIO_push(sbio, cbio);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						resp = query_responder(err, cbio, path, req, req_timeout);
 | 
				
			||||||
 | 
						if (!resp)
 | 
				
			||||||
 | 
							BIO_printf(bio_err, "Error querying OCSP responsder\n");
 | 
				
			||||||
 | 
						end:
 | 
				
			||||||
 | 
						if (ctx)
 | 
				
			||||||
 | 
							SSL_CTX_free(ctx);
 | 
				
			||||||
 | 
						if (cbio)
 | 
				
			||||||
 | 
							BIO_free_all(cbio);
 | 
				
			||||||
 | 
						return resp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,9 +8,8 @@
 | 
				
			|||||||
HOME			= .
 | 
					HOME			= .
 | 
				
			||||||
RANDFILE		= $ENV::HOME/.rnd
 | 
					RANDFILE		= $ENV::HOME/.rnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Extra OBJECT IDENTIFIER info:
 | 
					# Uncomment out to enable OpenSSL configuration see config(3)
 | 
				
			||||||
#oid_file		= $ENV::HOME/.oid
 | 
					# openssl_conf = openssl_init
 | 
				
			||||||
oid_section		= new_oids
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# To use this configuration file with the "-extfile" option of the
 | 
					# To use this configuration file with the "-extfile" option of the
 | 
				
			||||||
# "openssl x509" utility, name here the section containing the
 | 
					# "openssl x509" utility, name here the section containing the
 | 
				
			||||||
@@ -19,13 +18,22 @@ oid_section		= new_oids
 | 
				
			|||||||
# (Alternatively, use a configuration file that has only
 | 
					# (Alternatively, use a configuration file that has only
 | 
				
			||||||
# X.509v3 extensions in its main [= default] section.)
 | 
					# X.509v3 extensions in its main [= default] section.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[openssl_init]
 | 
				
			||||||
 | 
					# Extra OBJECT IDENTIFIER info:
 | 
				
			||||||
 | 
					oid_section = new_oids
 | 
				
			||||||
 | 
					alg_section = algs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ new_oids ]
 | 
					[ new_oids ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We can add new OIDs in here for use by 'ca' and 'req'.
 | 
					# We can add new OIDs in here for use by any config aware application
 | 
				
			||||||
# Add a simple OID like this:
 | 
					# Add a simple OID like this:
 | 
				
			||||||
# testoid1=1.2.3.4
 | 
					# shortname=Long Object Identifier Name, 1.2.3.4
 | 
				
			||||||
# Or use config file substitution like this:
 | 
					# Or use config file substitution like this:
 | 
				
			||||||
# testoid2=${testoid1}.5.6
 | 
					# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ algs ]
 | 
				
			||||||
 | 
					# Algorithm configuration options. Currently just fips_mode
 | 
				
			||||||
 | 
					fips_mode = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####################################################################
 | 
					####################################################################
 | 
				
			||||||
[ ca ]
 | 
					[ ca ]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -147,6 +147,7 @@ char *default_config_file=NULL;
 | 
				
			|||||||
#ifdef MONOLITH
 | 
					#ifdef MONOLITH
 | 
				
			||||||
CONF *config=NULL;
 | 
					CONF *config=NULL;
 | 
				
			||||||
BIO *bio_err=NULL;
 | 
					BIO *bio_err=NULL;
 | 
				
			||||||
 | 
					int in_FIPS_mode=0;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -232,6 +233,19 @@ int main(int Argc, char *Argv[])
 | 
				
			|||||||
	arg.data=NULL;
 | 
						arg.data=NULL;
 | 
				
			||||||
	arg.count=0;
 | 
						arg.count=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						in_FIPS_mode = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
 | 
						if(getenv("OPENSSL_FIPS")) {
 | 
				
			||||||
 | 
							if (!FIPS_mode_set(1)) {
 | 
				
			||||||
 | 
								ERR_load_crypto_strings();
 | 
				
			||||||
 | 
								ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
 | 
				
			||||||
 | 
								EXIT(1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							in_FIPS_mode = 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bio_err == NULL)
 | 
						if (bio_err == NULL)
 | 
				
			||||||
		if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
							if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
				
			||||||
			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
 | 
								BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,9 +8,8 @@
 | 
				
			|||||||
HOME			= .
 | 
					HOME			= .
 | 
				
			||||||
RANDFILE		= $ENV::HOME/.rnd
 | 
					RANDFILE		= $ENV::HOME/.rnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Extra OBJECT IDENTIFIER info:
 | 
					# Uncomment out to enable OpenSSL configuration see config(3)
 | 
				
			||||||
#oid_file		= $ENV::HOME/.oid
 | 
					# openssl_conf = openssl_init
 | 
				
			||||||
oid_section		= new_oids
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# To use this configuration file with the "-extfile" option of the
 | 
					# To use this configuration file with the "-extfile" option of the
 | 
				
			||||||
# "openssl x509" utility, name here the section containing the
 | 
					# "openssl x509" utility, name here the section containing the
 | 
				
			||||||
@@ -19,13 +18,22 @@ oid_section		= new_oids
 | 
				
			|||||||
# (Alternatively, use a configuration file that has only
 | 
					# (Alternatively, use a configuration file that has only
 | 
				
			||||||
# X.509v3 extensions in its main [= default] section.)
 | 
					# X.509v3 extensions in its main [= default] section.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[openssl_init]
 | 
				
			||||||
 | 
					# Extra OBJECT IDENTIFIER info:
 | 
				
			||||||
 | 
					oid_section = new_oids
 | 
				
			||||||
 | 
					alg_section = algs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ new_oids ]
 | 
					[ new_oids ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We can add new OIDs in here for use by 'ca' and 'req'.
 | 
					# We can add new OIDs in here for use by any config aware application
 | 
				
			||||||
# Add a simple OID like this:
 | 
					# Add a simple OID like this:
 | 
				
			||||||
# testoid1=1.2.3.4
 | 
					# shortname=Long Object Identifier Name, 1.2.3.4
 | 
				
			||||||
# Or use config file substitution like this:
 | 
					# Or use config file substitution like this:
 | 
				
			||||||
# testoid2=${testoid1}.5.6
 | 
					# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ algs ]
 | 
				
			||||||
 | 
					# Algorithm configuration options. Currently just fips_mode
 | 
				
			||||||
 | 
					fips_mode = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####################################################################
 | 
					####################################################################
 | 
				
			||||||
[ ca ]
 | 
					[ ca ]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -100,6 +100,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
    char **args;
 | 
					    char **args;
 | 
				
			||||||
    char *name = NULL;
 | 
					    char *name = NULL;
 | 
				
			||||||
    char *csp_name = NULL;
 | 
					    char *csp_name = NULL;
 | 
				
			||||||
 | 
					    int add_lmk = 0;
 | 
				
			||||||
    PKCS12 *p12 = NULL;
 | 
					    PKCS12 *p12 = NULL;
 | 
				
			||||||
    char pass[50], macpass[50];
 | 
					    char pass[50], macpass[50];
 | 
				
			||||||
    int export_cert = 0;
 | 
					    int export_cert = 0;
 | 
				
			||||||
@@ -110,7 +111,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
    int maciter = PKCS12_DEFAULT_ITER;
 | 
					    int maciter = PKCS12_DEFAULT_ITER;
 | 
				
			||||||
    int twopass = 0;
 | 
					    int twopass = 0;
 | 
				
			||||||
    int keytype = 0;
 | 
					    int keytype = 0;
 | 
				
			||||||
    int cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
 | 
					    int cert_pbe;
 | 
				
			||||||
    int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
 | 
					    int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
 | 
				
			||||||
    int ret = 1;
 | 
					    int ret = 1;
 | 
				
			||||||
    int macver = 1;
 | 
					    int macver = 1;
 | 
				
			||||||
@@ -127,6 +128,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    apps_startup();
 | 
					    apps_startup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
 | 
					    if (FIPS_mode())
 | 
				
			||||||
 | 
						cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    enc = EVP_des_ede3_cbc();
 | 
					    enc = EVP_des_ede3_cbc();
 | 
				
			||||||
    if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
 | 
					    if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -153,10 +161,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
    			cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
 | 
					    			cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
 | 
				
			||||||
		else if (!strcmp (*args, "-export")) export_cert = 1;
 | 
							else if (!strcmp (*args, "-export")) export_cert = 1;
 | 
				
			||||||
		else if (!strcmp (*args, "-des")) enc=EVP_des_cbc();
 | 
							else if (!strcmp (*args, "-des")) enc=EVP_des_cbc();
 | 
				
			||||||
 | 
							else if (!strcmp (*args, "-des3")) enc = EVP_des_ede3_cbc();
 | 
				
			||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
		else if (!strcmp (*args, "-idea")) enc=EVP_idea_cbc();
 | 
							else if (!strcmp (*args, "-idea")) enc=EVP_idea_cbc();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		else if (!strcmp (*args, "-des3")) enc = EVP_des_ede3_cbc();
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							else if (!strcmp(*args, "-seed")) enc=EVP_seed_cbc();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		else if (!strcmp(*args,"-aes128")) enc=EVP_aes_128_cbc();
 | 
							else if (!strcmp(*args,"-aes128")) enc=EVP_aes_128_cbc();
 | 
				
			||||||
		else if (!strcmp(*args,"-aes192")) enc=EVP_aes_192_cbc();
 | 
							else if (!strcmp(*args,"-aes192")) enc=EVP_aes_192_cbc();
 | 
				
			||||||
@@ -221,7 +232,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			args++;	
 | 
								args++;	
 | 
				
			||||||
			name = *args;
 | 
								name = *args;
 | 
				
			||||||
		    } else badarg = 1;
 | 
							    } else badarg = 1;
 | 
				
			||||||
		} else if (!strcmp (*args, "-CSP")) {
 | 
							} else if (!strcmp (*args, "-LMK"))
 | 
				
			||||||
 | 
								add_lmk = 1;
 | 
				
			||||||
 | 
							else if (!strcmp (*args, "-CSP")) {
 | 
				
			||||||
		    if (args[1]) {
 | 
							    if (args[1]) {
 | 
				
			||||||
			args++;	
 | 
								args++;	
 | 
				
			||||||
			csp_name = *args;
 | 
								csp_name = *args;
 | 
				
			||||||
@@ -306,6 +319,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
	BIO_printf (bio_err, "-idea         encrypt private keys with idea\n");
 | 
						BIO_printf (bio_err, "-idea         encrypt private keys with idea\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						BIO_printf (bio_err, "-seed         encrypt private keys with seed\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
	BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
 | 
						BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
 | 
				
			||||||
	BIO_printf (bio_err, "              encrypt PEM output with cbc aes\n");
 | 
						BIO_printf (bio_err, "              encrypt PEM output with cbc aes\n");
 | 
				
			||||||
@@ -332,6 +348,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	BIO_printf(bio_err,  "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
						BIO_printf(bio_err,  "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
				
			||||||
	BIO_printf(bio_err,  "              load the file (or the files in the directory) into\n");
 | 
						BIO_printf(bio_err,  "              load the file (or the files in the directory) into\n");
 | 
				
			||||||
	BIO_printf(bio_err,  "              the random number generator\n");
 | 
						BIO_printf(bio_err,  "              the random number generator\n");
 | 
				
			||||||
 | 
					  	BIO_printf(bio_err,  "-CSP name     Microsoft CSP name\n");
 | 
				
			||||||
 | 
					 	BIO_printf(bio_err,  "-LMK          Add local machine keyset attribute to private key\n");
 | 
				
			||||||
    	goto end;
 | 
					    	goto end;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -471,7 +489,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
					X509_keyid_set1(ucert, NULL, 0);
 | 
										X509_keyid_set1(ucert, NULL, 0);
 | 
				
			||||||
					X509_alias_set1(ucert, NULL, 0);
 | 
										X509_alias_set1(ucert, NULL, 0);
 | 
				
			||||||
					/* Remove from list */
 | 
										/* Remove from list */
 | 
				
			||||||
					sk_X509_delete(certs, i);
 | 
										(void)sk_X509_delete(certs, i);
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@@ -556,7 +574,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	if (csp_name && key)
 | 
						if (csp_name && key)
 | 
				
			||||||
		EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name,
 | 
							EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name,
 | 
				
			||||||
				MBSTRING_ASC, (unsigned char *)csp_name, -1);
 | 
									MBSTRING_ASC, (unsigned char *)csp_name, -1);
 | 
				
			||||||
		
 | 
					
 | 
				
			||||||
 | 
						if (add_lmk && key)
 | 
				
			||||||
 | 
							EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CRYPTO_MDEBUG
 | 
					#ifdef CRYPTO_MDEBUG
 | 
				
			||||||
	CRYPTO_pop_info();
 | 
						CRYPTO_pop_info();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								apps/progs.h
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								apps/progs.h
									
									
									
									
									
								
							@@ -28,6 +28,7 @@ extern int speed_main(int argc,char *argv[]);
 | 
				
			|||||||
extern int s_time_main(int argc,char *argv[]);
 | 
					extern int s_time_main(int argc,char *argv[]);
 | 
				
			||||||
extern int version_main(int argc,char *argv[]);
 | 
					extern int version_main(int argc,char *argv[]);
 | 
				
			||||||
extern int pkcs7_main(int argc,char *argv[]);
 | 
					extern int pkcs7_main(int argc,char *argv[]);
 | 
				
			||||||
 | 
					extern int cms_main(int argc,char *argv[]);
 | 
				
			||||||
extern int crl2pkcs7_main(int argc,char *argv[]);
 | 
					extern int crl2pkcs7_main(int argc,char *argv[]);
 | 
				
			||||||
extern int sess_id_main(int argc,char *argv[]);
 | 
					extern int sess_id_main(int argc,char *argv[]);
 | 
				
			||||||
extern int ciphers_main(int argc,char *argv[]);
 | 
					extern int ciphers_main(int argc,char *argv[]);
 | 
				
			||||||
@@ -109,6 +110,9 @@ FUNCTION functions[] = {
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"version",version_main},
 | 
						{FUNC_TYPE_GENERAL,"version",version_main},
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"pkcs7",pkcs7_main},
 | 
						{FUNC_TYPE_GENERAL,"pkcs7",pkcs7_main},
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_CMS
 | 
				
			||||||
 | 
						{FUNC_TYPE_GENERAL,"cms",cms_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"crl2pkcs7",crl2pkcs7_main},
 | 
						{FUNC_TYPE_GENERAL,"crl2pkcs7",crl2pkcs7_main},
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"sess_id",sess_id_main},
 | 
						{FUNC_TYPE_GENERAL,"sess_id",sess_id_main},
 | 
				
			||||||
#if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
 | 
					#if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
 | 
				
			||||||
@@ -197,6 +201,9 @@ FUNCTION functions[] = {
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
	{FUNC_TYPE_CIPHER,"idea",enc_main},
 | 
						{FUNC_TYPE_CIPHER,"idea",enc_main},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						{FUNC_TYPE_CIPHER,"seed",enc_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC4
 | 
					#ifndef OPENSSL_NO_RC4
 | 
				
			||||||
	{FUNC_TYPE_CIPHER,"rc4",enc_main},
 | 
						{FUNC_TYPE_CIPHER,"rc4",enc_main},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -263,6 +270,18 @@ FUNCTION functions[] = {
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
	{FUNC_TYPE_CIPHER,"idea-ofb",enc_main},
 | 
						{FUNC_TYPE_CIPHER,"idea-ofb",enc_main},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						{FUNC_TYPE_CIPHER,"seed-cbc",enc_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						{FUNC_TYPE_CIPHER,"seed-ecb",enc_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						{FUNC_TYPE_CIPHER,"seed-cfb",enc_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						{FUNC_TYPE_CIPHER,"seed-ofb",enc_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
	{FUNC_TYPE_CIPHER,"rc2-cbc",enc_main},
 | 
						{FUNC_TYPE_CIPHER,"rc2-cbc",enc_main},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,8 @@ foreach (@ARGV)
 | 
				
			|||||||
		{ print "#ifndef OPENSSL_NO_DH\n${str}#endif\n"; }
 | 
							{ print "#ifndef OPENSSL_NO_DH\n${str}#endif\n"; }
 | 
				
			||||||
	elsif ( ($_ =~ /^pkcs12$/))
 | 
						elsif ( ($_ =~ /^pkcs12$/))
 | 
				
			||||||
		{ print "#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_SHA1)\n${str}#endif\n"; }
 | 
							{ print "#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_SHA1)\n${str}#endif\n"; }
 | 
				
			||||||
 | 
						elsif ( ($_ =~ /^cms$/))
 | 
				
			||||||
 | 
							{ print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n"; }
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{ print $str; }
 | 
							{ print $str; }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -61,13 +63,14 @@ foreach (
 | 
				
			|||||||
	"camellia-192-cbc", "camellia-192-ecb",
 | 
						"camellia-192-cbc", "camellia-192-ecb",
 | 
				
			||||||
	"camellia-256-cbc", "camellia-256-ecb",
 | 
						"camellia-256-cbc", "camellia-256-ecb",
 | 
				
			||||||
	"base64",
 | 
						"base64",
 | 
				
			||||||
	"des", "des3", "desx", "idea", "rc4", "rc4-40",
 | 
						"des", "des3", "desx", "idea", "seed", "rc4", "rc4-40",
 | 
				
			||||||
	"rc2", "bf", "cast", "rc5",
 | 
						"rc2", "bf", "cast", "rc5",
 | 
				
			||||||
	"des-ecb", "des-ede",    "des-ede3",
 | 
						"des-ecb", "des-ede",    "des-ede3",
 | 
				
			||||||
	"des-cbc", "des-ede-cbc","des-ede3-cbc",
 | 
						"des-cbc", "des-ede-cbc","des-ede3-cbc",
 | 
				
			||||||
	"des-cfb", "des-ede-cfb","des-ede3-cfb",
 | 
						"des-cfb", "des-ede-cfb","des-ede3-cfb",
 | 
				
			||||||
	"des-ofb", "des-ede-ofb","des-ede3-ofb",
 | 
						"des-ofb", "des-ede-ofb","des-ede3-ofb",
 | 
				
			||||||
	"idea-cbc","idea-ecb",   "idea-cfb", "idea-ofb",
 | 
						"idea-cbc","idea-ecb",    "idea-cfb", "idea-ofb",
 | 
				
			||||||
 | 
						"seed-cbc","seed-ecb",    "seed-cfb", "seed-ofb",
 | 
				
			||||||
	"rc2-cbc", "rc2-ecb", "rc2-cfb","rc2-ofb", "rc2-64-cbc", "rc2-40-cbc",
 | 
						"rc2-cbc", "rc2-ecb", "rc2-cfb","rc2-ofb", "rc2-64-cbc", "rc2-40-cbc",
 | 
				
			||||||
	"bf-cbc",  "bf-ecb",     "bf-cfb",   "bf-ofb",
 | 
						"bf-cbc",  "bf-ecb",     "bf-cfb",   "bf-ofb",
 | 
				
			||||||
	"cast5-cbc","cast5-ecb", "cast5-cfb","cast5-ofb",
 | 
						"cast5-cbc","cast5-ecb", "cast5-cfb","cast5-ofb",
 | 
				
			||||||
@@ -80,6 +83,7 @@ foreach (
 | 
				
			|||||||
	elsif ($_ =~ /aes/)  { $t="#ifndef OPENSSL_NO_AES\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /aes/)  { $t="#ifndef OPENSSL_NO_AES\n${t}#endif\n"; }
 | 
				
			||||||
	elsif ($_ =~ /camellia/)  { $t="#ifndef OPENSSL_NO_CAMELLIA\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /camellia/)  { $t="#ifndef OPENSSL_NO_CAMELLIA\n${t}#endif\n"; }
 | 
				
			||||||
	elsif ($_ =~ /idea/) { $t="#ifndef OPENSSL_NO_IDEA\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /idea/) { $t="#ifndef OPENSSL_NO_IDEA\n${t}#endif\n"; }
 | 
				
			||||||
 | 
						elsif ($_ =~ /seed/) { $t="#ifndef OPENSSL_NO_SEED\n${t}#endif\n"; }
 | 
				
			||||||
	elsif ($_ =~ /rc4/)  { $t="#ifndef OPENSSL_NO_RC4\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /rc4/)  { $t="#ifndef OPENSSL_NO_RC4\n${t}#endif\n"; }
 | 
				
			||||||
	elsif ($_ =~ /rc2/)  { $t="#ifndef OPENSSL_NO_RC2\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /rc2/)  { $t="#ifndef OPENSSL_NO_RC2\n${t}#endif\n"; }
 | 
				
			||||||
	elsif ($_ =~ /bf/)   { $t="#ifndef OPENSSL_NO_BF\n${t}#endif\n"; }
 | 
						elsif ($_ =~ /bf/)   { $t="#ifndef OPENSSL_NO_BF\n${t}#endif\n"; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -213,7 +213,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_write(out, buf, chunk);
 | 
							BIO_write(out, buf, chunk);
 | 
				
			||||||
		num -= chunk;
 | 
							num -= chunk;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	BIO_flush(out);
 | 
						(void)BIO_flush(out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	app_RAND_write_file(NULL, bio_err);
 | 
						app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
	ret = 0;
 | 
						ret = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -719,8 +719,7 @@ bad:
 | 
				
			|||||||
			   message */
 | 
								   message */
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA || 
 | 
							else
 | 
				
			||||||
			EVP_PKEY_type(pkey->type) == EVP_PKEY_EC)
 | 
					 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			char *randfile = NCONF_get_string(req_conf,SECTION,"RANDFILE");
 | 
								char *randfile = NCONF_get_string(req_conf,SECTION,"RANDFILE");
 | 
				
			||||||
			if (randfile == NULL)
 | 
								if (randfile == NULL)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,6 +81,7 @@
 | 
				
			|||||||
 * -des		- encrypt output if PEM format with DES in cbc mode
 | 
					 * -des		- encrypt output if PEM format with DES in cbc mode
 | 
				
			||||||
 * -des3	- encrypt output if PEM format
 | 
					 * -des3	- encrypt output if PEM format
 | 
				
			||||||
 * -idea	- encrypt output if PEM format
 | 
					 * -idea	- encrypt output if PEM format
 | 
				
			||||||
 | 
					 * -seed	- encrypt output if PEM format
 | 
				
			||||||
 * -aes128	- encrypt output if PEM format
 | 
					 * -aes128	- encrypt output if PEM format
 | 
				
			||||||
 * -aes192	- encrypt output if PEM format
 | 
					 * -aes192	- encrypt output if PEM format
 | 
				
			||||||
 * -aes256	- encrypt output if PEM format
 | 
					 * -aes256	- encrypt output if PEM format
 | 
				
			||||||
@@ -211,6 +212,9 @@ bad:
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
		BIO_printf(bio_err," -idea           encrypt PEM output with cbc idea\n");
 | 
							BIO_printf(bio_err," -idea           encrypt PEM output with cbc idea\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							BIO_printf(bio_err," -seed           encrypt PEM output with cbc seed\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
		BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
							BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
 | 
				
			||||||
		BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
							BIO_printf(bio_err,"                 encrypt PEM output with cbc aes\n");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -119,24 +119,36 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	while(argc >= 1)
 | 
						while(argc >= 1)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (!strcmp(*argv,"-in")) {
 | 
							if (!strcmp(*argv,"-in")) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
                        infile= *(++argv);
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									infile= *(++argv);
 | 
				
			||||||
		} else if (!strcmp(*argv,"-out")) {
 | 
							} else if (!strcmp(*argv,"-out")) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
			outfile= *(++argv);
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									outfile= *(++argv);
 | 
				
			||||||
		} else if(!strcmp(*argv, "-inkey")) {
 | 
							} else if(!strcmp(*argv, "-inkey")) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
			keyfile = *(++argv);
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									keyfile = *(++argv);
 | 
				
			||||||
		} else if (!strcmp(*argv,"-passin")) {
 | 
							} else if (!strcmp(*argv,"-passin")) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
			passargin= *(++argv);
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									passargin= *(++argv);
 | 
				
			||||||
		} else if (strcmp(*argv,"-keyform") == 0) {
 | 
							} else if (strcmp(*argv,"-keyform") == 0) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
			keyform=str2fmt(*(++argv));
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									keyform=str2fmt(*(++argv));
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
		} else if(!strcmp(*argv, "-engine")) {
 | 
							} else if(!strcmp(*argv, "-engine")) {
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1)
 | 
				
			||||||
			engine = *(++argv);
 | 
									badarg = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									engine = *(++argv);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		} else if(!strcmp(*argv, "-pubin")) {
 | 
							} else if(!strcmp(*argv, "-pubin")) {
 | 
				
			||||||
			key_type = KEY_PUBKEY;
 | 
								key_type = KEY_PUBKEY;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,4 +167,7 @@ long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
 | 
				
			|||||||
#ifdef HEADER_SSL_H
 | 
					#ifdef HEADER_SSL_H
 | 
				
			||||||
void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret);
 | 
					void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret);
 | 
				
			||||||
void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg);
 | 
					void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg);
 | 
				
			||||||
 | 
					void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
 | 
				
			||||||
 | 
										unsigned char *data, int len,
 | 
				
			||||||
 | 
										void *arg);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										61
									
								
								apps/s_cb.c
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								apps/s_cb.c
									
									
									
									
									
								
							@@ -573,5 +573,64 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
			BIO_printf(bio, " ...");
 | 
								BIO_printf(bio, " ...");
 | 
				
			||||||
		BIO_printf(bio, "\n");
 | 
							BIO_printf(bio, "\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	BIO_flush(bio);
 | 
						(void)BIO_flush(bio);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
 | 
				
			||||||
 | 
										unsigned char *data, int len,
 | 
				
			||||||
 | 
										void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BIO *bio = arg;
 | 
				
			||||||
 | 
						char *extname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch(type)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_server_name:
 | 
				
			||||||
 | 
							extname = "server name";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_max_fragment_length:
 | 
				
			||||||
 | 
							extname = "max fragment length";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_client_certificate_url:
 | 
				
			||||||
 | 
							extname = "client certificate URL";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_trusted_ca_keys:
 | 
				
			||||||
 | 
							extname = "trusted CA keys";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_truncated_hmac:
 | 
				
			||||||
 | 
							extname = "truncated HMAC";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_status_request:
 | 
				
			||||||
 | 
							extname = "status request";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_elliptic_curves:
 | 
				
			||||||
 | 
							extname = "elliptic curves";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_ec_point_formats:
 | 
				
			||||||
 | 
							extname = "EC point formats";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_session_ticket:
 | 
				
			||||||
 | 
							extname = "server ticket";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
							extname = "unknown";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						BIO_printf(bio, "TLS %s extension \"%s\" (id=%d), len=%d\n",
 | 
				
			||||||
 | 
								client_server ? "server": "client",
 | 
				
			||||||
 | 
								extname, type, len);
 | 
				
			||||||
 | 
						BIO_dump(bio, (char *)data, len);
 | 
				
			||||||
 | 
						(void)BIO_flush(bio);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										225
									
								
								apps/s_client.c
									
									
									
									
									
								
							
							
						
						
									
										225
									
								
								apps/s_client.c
									
									
									
									
									
								
							@@ -134,6 +134,7 @@ typedef unsigned int u_int;
 | 
				
			|||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
#include <openssl/pem.h>
 | 
					#include <openssl/pem.h>
 | 
				
			||||||
#include <openssl/rand.h>
 | 
					#include <openssl/rand.h>
 | 
				
			||||||
 | 
					#include <openssl/ocsp.h>
 | 
				
			||||||
#include "s_apps.h"
 | 
					#include "s_apps.h"
 | 
				
			||||||
#include "timeouts.h"
 | 
					#include "timeouts.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -171,11 +172,18 @@ static int c_nbio=0;
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
static int c_Pause=0;
 | 
					static int c_Pause=0;
 | 
				
			||||||
static int c_debug=0;
 | 
					static int c_debug=0;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					static int c_tlsextdebug=0;
 | 
				
			||||||
 | 
					static int c_status_req=0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
static int c_msg=0;
 | 
					static int c_msg=0;
 | 
				
			||||||
static int c_showcerts=0;
 | 
					static int c_showcerts=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void sc_usage(void);
 | 
					static void sc_usage(void);
 | 
				
			||||||
static void print_stuff(BIO *berr,SSL *con,int full);
 | 
					static void print_stuff(BIO *berr,SSL *con,int full);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					static int ocsp_resp_cb(SSL *s, void *arg);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
static BIO *bio_c_out=NULL;
 | 
					static BIO *bio_c_out=NULL;
 | 
				
			||||||
static int c_quiet=0;
 | 
					static int c_quiet=0;
 | 
				
			||||||
static int c_ign_eof=0;
 | 
					static int c_ign_eof=0;
 | 
				
			||||||
@@ -231,9 +239,37 @@ static void sc_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -engine id    - Initialise and use the specified engine\n");
 | 
						BIO_printf(bio_err," -engine id    - Initialise and use the specified engine\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
						BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -sess_out arg - file to write SSL session to\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -sess_in arg  - file to read SSL session from\n");
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -servername host  - Set TLS extension servername in ClientHello\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -tlsextdebug      - hex dump of all TLS extensions received\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -status           - request certificate status from server\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -no_ticket        - disable use of RFC4507bis session tickets\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This is a context that we pass to callbacks */
 | 
				
			||||||
 | 
					typedef struct tlsextctx_st {
 | 
				
			||||||
 | 
					   BIO * biodebug;
 | 
				
			||||||
 | 
					   int ack;
 | 
				
			||||||
 | 
					} tlsextctx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						tlsextctx * p = (tlsextctx *) arg;
 | 
				
			||||||
 | 
						const char * hn= SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
 | 
				
			||||||
 | 
						if (SSL_get_servername_type(s) != -1) 
 | 
				
			||||||
 | 
					 	        p->ack = !SSL_session_reused(s) && hn != NULL;
 | 
				
			||||||
 | 
						else 
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"Can't use SSL_get_servername\n");
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						return SSL_TLSEXT_ERR_OK;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
enum
 | 
					enum
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	PROTO_OFF	= 0,
 | 
						PROTO_OFF	= 0,
 | 
				
			||||||
@@ -281,12 +317,20 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int mbuf_len=0;
 | 
						int mbuf_len=0;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	char *engine_id=NULL;
 | 
						char *engine_id=NULL;
 | 
				
			||||||
	ENGINE *e=NULL;
 | 
						char *ssl_client_engine_id=NULL;
 | 
				
			||||||
 | 
						ENGINE *e=NULL, *ssl_client_engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
 | 
					#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
 | 
				
			||||||
	struct timeval tv;
 | 
						struct timeval tv;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						char *servername = NULL; 
 | 
				
			||||||
 | 
					        tlsextctx tlsextcbp = 
 | 
				
			||||||
 | 
					        {NULL,0};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						char *sess_in = NULL;
 | 
				
			||||||
 | 
						char *sess_out = NULL;
 | 
				
			||||||
	struct sockaddr peer;
 | 
						struct sockaddr peer;
 | 
				
			||||||
	int peerlen = sizeof(peer);
 | 
						int peerlen = sizeof(peer);
 | 
				
			||||||
	int enable_timeouts = 0 ;
 | 
						int enable_timeouts = 0 ;
 | 
				
			||||||
@@ -361,6 +405,16 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			cert_file= *(++argv);
 | 
								cert_file= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-sess_out") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								sess_out = *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-sess_in") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								sess_in = *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if	(strcmp(*argv,"-certform") == 0)
 | 
							else if	(strcmp(*argv,"-certform") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
@@ -385,6 +439,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			c_Pause=1;
 | 
								c_Pause=1;
 | 
				
			||||||
		else if	(strcmp(*argv,"-debug") == 0)
 | 
							else if	(strcmp(*argv,"-debug") == 0)
 | 
				
			||||||
			c_debug=1;
 | 
								c_debug=1;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-tlsextdebug") == 0)
 | 
				
			||||||
 | 
								c_tlsextdebug=1;
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-status") == 0)
 | 
				
			||||||
 | 
								c_status_req=1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef WATT32
 | 
					#ifdef WATT32
 | 
				
			||||||
		else if (strcmp(*argv,"-wdebug") == 0)
 | 
							else if (strcmp(*argv,"-wdebug") == 0)
 | 
				
			||||||
			dbug_init();
 | 
								dbug_init();
 | 
				
			||||||
@@ -460,6 +520,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			off|=SSL_OP_NO_SSLv3;
 | 
								off|=SSL_OP_NO_SSLv3;
 | 
				
			||||||
		else if (strcmp(*argv,"-no_ssl2") == 0)
 | 
							else if (strcmp(*argv,"-no_ssl2") == 0)
 | 
				
			||||||
			off|=SSL_OP_NO_SSLv2;
 | 
								off|=SSL_OP_NO_SSLv2;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-no_ticket") == 0)
 | 
				
			||||||
 | 
								{ off|=SSL_OP_NO_TICKET; }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else if (strcmp(*argv,"-serverpref") == 0)
 | 
							else if (strcmp(*argv,"-serverpref") == 0)
 | 
				
			||||||
			off|=SSL_OP_CIPHER_SERVER_PREFERENCE;
 | 
								off|=SSL_OP_CIPHER_SERVER_PREFERENCE;
 | 
				
			||||||
		else if	(strcmp(*argv,"-cipher") == 0)
 | 
							else if	(strcmp(*argv,"-cipher") == 0)
 | 
				
			||||||
@@ -492,12 +556,25 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			engine_id = *(++argv);
 | 
								engine_id = *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-ssl_client_engine") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								ssl_client_engine_id = *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		else if (strcmp(*argv,"-rand") == 0)
 | 
							else if (strcmp(*argv,"-rand") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			inrand= *(++argv);
 | 
								inrand= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-servername") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								servername= *(++argv);
 | 
				
			||||||
 | 
								/* meth=TLSv1_client_method(); */
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
								BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
				
			||||||
@@ -519,6 +596,16 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine_id, 1);
 | 
					        e = setup_engine(bio_err, engine_id, 1);
 | 
				
			||||||
 | 
						if (ssl_client_engine_id)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ssl_client_engine = ENGINE_by_id(ssl_client_engine_id);
 | 
				
			||||||
 | 
							if (!ssl_client_engine)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,
 | 
				
			||||||
 | 
										"Error getting client auth engine\n");
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
 | 
						if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -586,6 +673,20 @@ bad:
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
 | 
						if (ssl_client_engine)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!SSL_CTX_set_client_cert_engine(ctx, ssl_client_engine))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(bio_err, "Error setting client auth engine\n");
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								ENGINE_free(ssl_client_engine);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							ENGINE_free(ssl_client_engine);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bugs)
 | 
						if (bugs)
 | 
				
			||||||
		SSL_CTX_set_options(ctx,SSL_OP_ALL|off);
 | 
							SSL_CTX_set_options(ctx,SSL_OP_ALL|off);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
@@ -621,8 +722,51 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	store = SSL_CTX_get_cert_store(ctx);
 | 
						store = SSL_CTX_get_cert_store(ctx);
 | 
				
			||||||
	X509_STORE_set_flags(store, vflags);
 | 
						X509_STORE_set_flags(store, vflags);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (servername != NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							tlsextcbp.biodebug = bio_err;
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	con=SSL_new(ctx);
 | 
						con=SSL_new(ctx);
 | 
				
			||||||
 | 
						if (sess_in)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_SESSION *sess;
 | 
				
			||||||
 | 
							BIO *stmp = BIO_new_file(sess_in, "r");
 | 
				
			||||||
 | 
							if (!stmp)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err, "Can't open session file %s\n",
 | 
				
			||||||
 | 
											sess_in);
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							sess = PEM_read_bio_SSL_SESSION(stmp, NULL, 0, NULL);
 | 
				
			||||||
 | 
							BIO_free(stmp);
 | 
				
			||||||
 | 
							if (!sess)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err, "Can't open session file %s\n",
 | 
				
			||||||
 | 
											sess_in);
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							SSL_set_session(con, sess);
 | 
				
			||||||
 | 
							SSL_SESSION_free(sess);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (servername != NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!SSL_set_tlsext_host_name(con,servername))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"Unable to set TLS servername extension.\n");
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_KRB5
 | 
					#ifndef OPENSSL_NO_KRB5
 | 
				
			||||||
	if (con  &&  (con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
						if (con  &&  (con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -668,7 +812,7 @@ re_start:
 | 
				
			|||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BIO_ctrl_set_connected(sbio, 1, &peer);
 | 
							(void)BIO_ctrl_set_connected(sbio, 1, &peer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ( enable_timeouts)
 | 
							if ( enable_timeouts)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -714,6 +858,30 @@ re_start:
 | 
				
			|||||||
		SSL_set_msg_callback(con, msg_cb);
 | 
							SSL_set_msg_callback(con, msg_cb);
 | 
				
			||||||
		SSL_set_msg_callback_arg(con, bio_c_out);
 | 
							SSL_set_msg_callback_arg(con, bio_c_out);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (c_tlsextdebug)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_callback(con, tlsext_cb);
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_arg(con, bio_c_out);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (c_status_req)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_set_tlsext_status_type(con, TLSEXT_STATUSTYPE_ocsp);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_status_cb(ctx, ocsp_resp_cb);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_status_arg(ctx, bio_c_out);
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					STACK_OF(OCSP_RESPID) *ids = sk_OCSP_RESPID_new_null();
 | 
				
			||||||
 | 
					OCSP_RESPID *id = OCSP_RESPID_new();
 | 
				
			||||||
 | 
					id->value.byKey = ASN1_OCTET_STRING_new();
 | 
				
			||||||
 | 
					id->type = V_OCSP_RESPID_KEY;
 | 
				
			||||||
 | 
					ASN1_STRING_set(id->value.byKey, "Hello World", -1);
 | 
				
			||||||
 | 
					sk_OCSP_RESPID_push(ids, id);
 | 
				
			||||||
 | 
					SSL_set_tlsext_status_ids(con, ids);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SSL_set_bio(con,sbio,sbio);
 | 
						SSL_set_bio(con,sbio,sbio);
 | 
				
			||||||
	SSL_set_connect_state(con);
 | 
						SSL_set_connect_state(con);
 | 
				
			||||||
@@ -752,7 +920,7 @@ re_start:
 | 
				
			|||||||
		while (mbuf_len>3 && mbuf[3]=='-');
 | 
							while (mbuf_len>3 && mbuf[3]=='-');
 | 
				
			||||||
		/* STARTTLS command requires EHLO... */
 | 
							/* STARTTLS command requires EHLO... */
 | 
				
			||||||
		BIO_printf(fbio,"EHLO openssl.client.net\r\n");
 | 
							BIO_printf(fbio,"EHLO openssl.client.net\r\n");
 | 
				
			||||||
		BIO_flush(fbio);
 | 
							(void)BIO_flush(fbio);
 | 
				
			||||||
		/* wait for multi-line response to end EHLO SMTP response */
 | 
							/* wait for multi-line response to end EHLO SMTP response */
 | 
				
			||||||
		do
 | 
							do
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -761,7 +929,7 @@ re_start:
 | 
				
			|||||||
				foundit=1;
 | 
									foundit=1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		while (mbuf_len>3 && mbuf[3]=='-');
 | 
							while (mbuf_len>3 && mbuf[3]=='-');
 | 
				
			||||||
		BIO_flush(fbio);
 | 
							(void)BIO_flush(fbio);
 | 
				
			||||||
		BIO_pop(fbio);
 | 
							BIO_pop(fbio);
 | 
				
			||||||
		BIO_free(fbio);
 | 
							BIO_free(fbio);
 | 
				
			||||||
		if (!foundit)
 | 
							if (!foundit)
 | 
				
			||||||
@@ -785,7 +953,7 @@ re_start:
 | 
				
			|||||||
		BIO_gets(fbio,mbuf,BUFSIZZ);
 | 
							BIO_gets(fbio,mbuf,BUFSIZZ);
 | 
				
			||||||
		/* STARTTLS command requires CAPABILITY... */
 | 
							/* STARTTLS command requires CAPABILITY... */
 | 
				
			||||||
		BIO_printf(fbio,". CAPABILITY\r\n");
 | 
							BIO_printf(fbio,". CAPABILITY\r\n");
 | 
				
			||||||
		BIO_flush(fbio);
 | 
							(void)BIO_flush(fbio);
 | 
				
			||||||
		/* wait for multi-line CAPABILITY response */
 | 
							/* wait for multi-line CAPABILITY response */
 | 
				
			||||||
		do
 | 
							do
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -794,7 +962,7 @@ re_start:
 | 
				
			|||||||
				foundit=1;
 | 
									foundit=1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		while (mbuf_len>3 && mbuf[0]!='.');
 | 
							while (mbuf_len>3 && mbuf[0]!='.');
 | 
				
			||||||
		BIO_flush(fbio);
 | 
							(void)BIO_flush(fbio);
 | 
				
			||||||
		BIO_pop(fbio);
 | 
							BIO_pop(fbio);
 | 
				
			||||||
		BIO_free(fbio);
 | 
							BIO_free(fbio);
 | 
				
			||||||
		if (!foundit)
 | 
							if (!foundit)
 | 
				
			||||||
@@ -814,7 +982,7 @@ re_start:
 | 
				
			|||||||
			mbuf_len = BIO_gets(fbio,mbuf,BUFSIZZ);
 | 
								mbuf_len = BIO_gets(fbio,mbuf,BUFSIZZ);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		while (mbuf_len>3 && mbuf[3]=='-');
 | 
							while (mbuf_len>3 && mbuf[3]=='-');
 | 
				
			||||||
		BIO_flush(fbio);
 | 
							(void)BIO_flush(fbio);
 | 
				
			||||||
		BIO_pop(fbio);
 | 
							BIO_pop(fbio);
 | 
				
			||||||
		BIO_free(fbio);
 | 
							BIO_free(fbio);
 | 
				
			||||||
		BIO_printf(sbio,"AUTH TLS\r\n");
 | 
							BIO_printf(sbio,"AUTH TLS\r\n");
 | 
				
			||||||
@@ -837,6 +1005,17 @@ re_start:
 | 
				
			|||||||
			if (in_init)
 | 
								if (in_init)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				in_init=0;
 | 
									in_init=0;
 | 
				
			||||||
 | 
									if (sess_out)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										BIO *stmp = BIO_new_file(sess_out, "w");
 | 
				
			||||||
 | 
										if (stmp)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
											PEM_write_bio_SSL_SESSION(stmp, SSL_get_session(con));
 | 
				
			||||||
 | 
											BIO_free(stmp);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										else 
 | 
				
			||||||
 | 
											BIO_printf(bio_err, "Error writing session file %s\n", sess_out);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				print_stuff(bio_c_out,con,full_log);
 | 
									print_stuff(bio_c_out,con,full_log);
 | 
				
			||||||
				if (full_log > 0) full_log--;
 | 
									if (full_log > 0) full_log--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1303,6 +1482,34 @@ static void print_stuff(BIO *bio, SSL *s, int full)
 | 
				
			|||||||
	if (peer != NULL)
 | 
						if (peer != NULL)
 | 
				
			||||||
		X509_free(peer);
 | 
							X509_free(peer);
 | 
				
			||||||
	/* flush, or debugging output gets mixed with http response */
 | 
						/* flush, or debugging output gets mixed with http response */
 | 
				
			||||||
	BIO_flush(bio);
 | 
						(void)BIO_flush(bio);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int ocsp_resp_cb(SSL *s, void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						const unsigned char *p;
 | 
				
			||||||
 | 
						int len;
 | 
				
			||||||
 | 
						OCSP_RESPONSE *rsp;
 | 
				
			||||||
 | 
						len = SSL_get_tlsext_status_ocsp_resp(s, &p);
 | 
				
			||||||
 | 
						BIO_puts(arg, "OCSP response: ");
 | 
				
			||||||
 | 
						if (!p)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(arg, "no response sent\n");
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						rsp = d2i_OCSP_RESPONSE(NULL, &p, len);
 | 
				
			||||||
 | 
						if (!rsp)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(arg, "response parse error\n");
 | 
				
			||||||
 | 
							BIO_dump_indent(arg, (char *)p, len, 4);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						BIO_puts(arg, "\n======================================\n");
 | 
				
			||||||
 | 
						OCSP_RESPONSE_print(arg, rsp, 0);
 | 
				
			||||||
 | 
						BIO_puts(arg, "======================================\n");
 | 
				
			||||||
 | 
						OCSP_RESPONSE_free(rsp);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif  /* ndef OPENSSL_NO_TLSEXT */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										485
									
								
								apps/s_server.c
									
									
									
									
									
								
							
							
						
						
									
										485
									
								
								apps/s_server.c
									
									
									
									
									
								
							@@ -153,6 +153,7 @@ typedef unsigned int u_int;
 | 
				
			|||||||
#include <openssl/x509.h>
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
#include <openssl/rand.h>
 | 
					#include <openssl/rand.h>
 | 
				
			||||||
 | 
					#include <openssl/ocsp.h>
 | 
				
			||||||
#ifndef OPENSSL_NO_DH
 | 
					#ifndef OPENSSL_NO_DH
 | 
				
			||||||
#include <openssl/dh.h>
 | 
					#include <openssl/dh.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -238,6 +239,9 @@ static int bufsize=BUFSIZZ;
 | 
				
			|||||||
static int accept_socket= -1;
 | 
					static int accept_socket= -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TEST_CERT	"server.pem"
 | 
					#define TEST_CERT	"server.pem"
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					#define TEST_CERT2	"server2.pem"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#undef PROG
 | 
					#undef PROG
 | 
				
			||||||
#define PROG		s_server_main
 | 
					#define PROG		s_server_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -247,6 +251,9 @@ static char *cipher=NULL;
 | 
				
			|||||||
static int s_server_verify=SSL_VERIFY_NONE;
 | 
					static int s_server_verify=SSL_VERIFY_NONE;
 | 
				
			||||||
static int s_server_session_id_context = 1; /* anything will do */
 | 
					static int s_server_session_id_context = 1; /* anything will do */
 | 
				
			||||||
static const char *s_cert_file=TEST_CERT,*s_key_file=NULL;
 | 
					static const char *s_cert_file=TEST_CERT,*s_key_file=NULL;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					static const char *s_cert_file2=TEST_CERT2,*s_key_file2=NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
static char *s_dcert_file=NULL,*s_dkey_file=NULL;
 | 
					static char *s_dcert_file=NULL,*s_dkey_file=NULL;
 | 
				
			||||||
#ifdef FIONBIO
 | 
					#ifdef FIONBIO
 | 
				
			||||||
static int s_nbio=0;
 | 
					static int s_nbio=0;
 | 
				
			||||||
@@ -254,10 +261,18 @@ static int s_nbio=0;
 | 
				
			|||||||
static int s_nbio_test=0;
 | 
					static int s_nbio_test=0;
 | 
				
			||||||
int s_crlf=0;
 | 
					int s_crlf=0;
 | 
				
			||||||
static SSL_CTX *ctx=NULL;
 | 
					static SSL_CTX *ctx=NULL;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					static SSL_CTX *ctx2=NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
static int www=0;
 | 
					static int www=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static BIO *bio_s_out=NULL;
 | 
					static BIO *bio_s_out=NULL;
 | 
				
			||||||
static int s_debug=0;
 | 
					static int s_debug=0;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					static int s_tlsextdebug=0;
 | 
				
			||||||
 | 
					static int s_tlsextstatus=0;
 | 
				
			||||||
 | 
					static int cert_status_cb(SSL *s, void *arg);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
static int s_msg=0;
 | 
					static int s_msg=0;
 | 
				
			||||||
static int s_quiet=0;
 | 
					static int s_quiet=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -285,6 +300,11 @@ static void s_server_init(void)
 | 
				
			|||||||
	s_dkey_file=NULL;
 | 
						s_dkey_file=NULL;
 | 
				
			||||||
	s_cert_file=TEST_CERT;
 | 
						s_cert_file=TEST_CERT;
 | 
				
			||||||
	s_key_file=NULL;
 | 
						s_key_file=NULL;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						s_cert_file2=TEST_CERT2;
 | 
				
			||||||
 | 
						s_key_file2=NULL;
 | 
				
			||||||
 | 
						ctx2=NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef FIONBIO
 | 
					#ifdef FIONBIO
 | 
				
			||||||
	s_nbio=0;
 | 
						s_nbio=0;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -313,6 +333,11 @@ static void sv_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -Verify arg   - turn on peer certificate verification, must have a cert.\n");
 | 
						BIO_printf(bio_err," -Verify arg   - turn on peer certificate verification, must have a cert.\n");
 | 
				
			||||||
	BIO_printf(bio_err," -cert arg     - certificate file to use\n");
 | 
						BIO_printf(bio_err," -cert arg     - certificate file to use\n");
 | 
				
			||||||
	BIO_printf(bio_err,"                 (default is %s)\n",TEST_CERT);
 | 
						BIO_printf(bio_err,"                 (default is %s)\n",TEST_CERT);
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -crl_check    - check the peer certificate has not been revoked by its CA.\n" \
 | 
				
			||||||
 | 
						                   "                 The CRL(s) are appended to the certificate file\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -crl_check_all - check the peer certificate has not been revoked by its CA\n" \
 | 
				
			||||||
 | 
						                   "                 or any other CRL in the CA chain. CRL(s) are appened to the\n" \
 | 
				
			||||||
 | 
						                   "                 the certificate file.\n");
 | 
				
			||||||
	BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n");
 | 
						BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n");
 | 
				
			||||||
	BIO_printf(bio_err," -key arg      - Private Key file to use, in cert file if\n");
 | 
						BIO_printf(bio_err," -key arg      - Private Key file to use, in cert file if\n");
 | 
				
			||||||
	BIO_printf(bio_err,"                 not specified (default is %s)\n",TEST_CERT);
 | 
						BIO_printf(bio_err,"                 not specified (default is %s)\n",TEST_CERT);
 | 
				
			||||||
@@ -371,6 +396,16 @@ static void sv_usage(void)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	BIO_printf(bio_err," -id_prefix arg - Generate SSL/TLS session IDs prefixed by 'arg'\n");
 | 
						BIO_printf(bio_err," -id_prefix arg - Generate SSL/TLS session IDs prefixed by 'arg'\n");
 | 
				
			||||||
	BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
						BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -servername host - servername for HostName TLS extension\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -servername_fatal - on mismatch send fatal alert (default warning alert)\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -cert2 arg    - certificate file to use for servername\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err,"                 (default is %s)\n",TEST_CERT2);
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -key2 arg     - Private Key file to use for servername, in cert file if\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err,"                 not specified (default is %s)\n",TEST_CERT2);
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -tlsextdebug  - hex dump of all TLS extensions received\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -no_ticket    - disable use of RFC4507bis session tickets\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int local_argc=0;
 | 
					static int local_argc=0;
 | 
				
			||||||
@@ -526,6 +561,185 @@ static int ebcdic_puts(BIO *bp, const char *str)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This is a context that we pass to callbacks */
 | 
				
			||||||
 | 
					typedef struct tlsextctx_st {
 | 
				
			||||||
 | 
					   char * servername;
 | 
				
			||||||
 | 
					   BIO * biodebug;
 | 
				
			||||||
 | 
					   int extension_error;
 | 
				
			||||||
 | 
					} tlsextctx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						tlsextctx * p = (tlsextctx *) arg;
 | 
				
			||||||
 | 
						const char * servername = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
 | 
				
			||||||
 | 
					        if (servername && p->biodebug) 
 | 
				
			||||||
 | 
							BIO_printf(p->biodebug,"Hostname in TLS extension: \"%s\"\n",servername);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
						if (!p->servername)
 | 
				
			||||||
 | 
							return SSL_TLSEXT_ERR_NOACK;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (servername)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
					    		if (strcmp(servername,p->servername)) 
 | 
				
			||||||
 | 
								return p->extension_error;
 | 
				
			||||||
 | 
							if (ctx2)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(p->biodebug,"Swiching server context.\n");
 | 
				
			||||||
 | 
								SSL_set_SSL_CTX(s,ctx2);
 | 
				
			||||||
 | 
								}     
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						return SSL_TLSEXT_ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Structure passed to cert status callback */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct tlsextstatusctx_st {
 | 
				
			||||||
 | 
					   /* Default responder to use */
 | 
				
			||||||
 | 
					   char *host, *path, *port;
 | 
				
			||||||
 | 
					   int use_ssl;
 | 
				
			||||||
 | 
					   int timeout;
 | 
				
			||||||
 | 
					   BIO *err;
 | 
				
			||||||
 | 
					   int verbose;
 | 
				
			||||||
 | 
					} tlsextstatusctx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static tlsextstatusctx tlscstatp = {NULL, NULL, NULL, 0, -1, NULL, 0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Certificate Status callback. This is called when a client includes a
 | 
				
			||||||
 | 
					 * certificate status request extension.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This is a simplified version. It examines certificates each time and
 | 
				
			||||||
 | 
					 * makes one OCSP responder query for each request.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * A full version would store details such as the OCSP certificate IDs and
 | 
				
			||||||
 | 
					 * minimise the number of OCSP responses by caching them until they were
 | 
				
			||||||
 | 
					 * considered "expired".
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int cert_status_cb(SSL *s, void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						tlsextstatusctx *srctx = arg;
 | 
				
			||||||
 | 
						BIO *err = srctx->err;
 | 
				
			||||||
 | 
						char *host, *port, *path;
 | 
				
			||||||
 | 
						int use_ssl;
 | 
				
			||||||
 | 
						unsigned char *rspder = NULL;
 | 
				
			||||||
 | 
						int rspderlen;
 | 
				
			||||||
 | 
						STACK *aia = NULL;
 | 
				
			||||||
 | 
						X509 *x = NULL;
 | 
				
			||||||
 | 
						X509_STORE_CTX inctx;
 | 
				
			||||||
 | 
						X509_OBJECT obj;
 | 
				
			||||||
 | 
						OCSP_REQUEST *req = NULL;
 | 
				
			||||||
 | 
						OCSP_RESPONSE *resp = NULL;
 | 
				
			||||||
 | 
						OCSP_CERTID *id = NULL;
 | 
				
			||||||
 | 
						STACK_OF(X509_EXTENSION) *exts;
 | 
				
			||||||
 | 
						int ret = SSL_TLSEXT_ERR_NOACK;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					STACK_OF(OCSP_RESPID) *ids;
 | 
				
			||||||
 | 
					SSL_get_tlsext_status_ids(s, &ids);
 | 
				
			||||||
 | 
					BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (srctx->verbose)
 | 
				
			||||||
 | 
							BIO_puts(err, "cert_status: callback called\n");
 | 
				
			||||||
 | 
						/* Build up OCSP query from server certificate */
 | 
				
			||||||
 | 
						x = SSL_get_certificate(s);
 | 
				
			||||||
 | 
						aia = X509_get1_ocsp(x);
 | 
				
			||||||
 | 
						if (aia)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!OCSP_parse_url(sk_value(aia, 0),
 | 
				
			||||||
 | 
								&host, &port, &path, &use_ssl))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(err, "cert_status: can't parse AIA URL\n");
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (srctx->verbose)
 | 
				
			||||||
 | 
								BIO_printf(err, "cert_status: AIA URL: %s\n",
 | 
				
			||||||
 | 
										sk_value(aia, 0));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!srctx->host)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(srctx->err, "cert_status: no AIA and no default responder URL\n");
 | 
				
			||||||
 | 
								goto done;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							host = srctx->host;
 | 
				
			||||||
 | 
							path = srctx->path;
 | 
				
			||||||
 | 
							port = srctx->port;
 | 
				
			||||||
 | 
							use_ssl = srctx->use_ssl;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						if (!X509_STORE_CTX_init(&inctx,
 | 
				
			||||||
 | 
									SSL_CTX_get_cert_store(SSL_get_SSL_CTX(s)),
 | 
				
			||||||
 | 
									NULL, NULL))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						if (X509_STORE_get_by_subject(&inctx,X509_LU_X509,
 | 
				
			||||||
 | 
									X509_get_issuer_name(x),&obj) <= 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(err, "cert_status: Can't retrieve issuer certificate.\n");
 | 
				
			||||||
 | 
							X509_STORE_CTX_cleanup(&inctx);
 | 
				
			||||||
 | 
							goto done;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						req = OCSP_REQUEST_new();
 | 
				
			||||||
 | 
						if (!req)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						id = OCSP_cert_to_id(NULL, x, obj.data.x509);
 | 
				
			||||||
 | 
						X509_free(obj.data.x509);
 | 
				
			||||||
 | 
						X509_STORE_CTX_cleanup(&inctx);
 | 
				
			||||||
 | 
						if (!id)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						if (!OCSP_request_add0_id(req, id))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						id = NULL;
 | 
				
			||||||
 | 
						/* Add any extensions to the request */
 | 
				
			||||||
 | 
						SSL_get_tlsext_status_exts(s, &exts);
 | 
				
			||||||
 | 
						for (i = 0; i < sk_X509_EXTENSION_num(exts); i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							X509_EXTENSION *ext = sk_X509_EXTENSION_value(exts, i);
 | 
				
			||||||
 | 
							if (!OCSP_REQUEST_add_ext(req, ext, -1))
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						resp = process_responder(err, req, host, path, port, use_ssl,
 | 
				
			||||||
 | 
										srctx->timeout);
 | 
				
			||||||
 | 
						if (!resp)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(err, "cert_status: error querying responder\n");
 | 
				
			||||||
 | 
							goto done;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						rspderlen = i2d_OCSP_RESPONSE(resp, &rspder);
 | 
				
			||||||
 | 
						if (rspderlen <= 0)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						SSL_set_tlsext_status_ocsp_resp(s, rspder, rspderlen);
 | 
				
			||||||
 | 
						if (srctx->verbose)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_puts(err, "cert_status: ocsp response sent:\n");
 | 
				
			||||||
 | 
							OCSP_RESPONSE_print(err, resp, 2);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						ret = SSL_TLSEXT_ERR_OK;
 | 
				
			||||||
 | 
						done:
 | 
				
			||||||
 | 
						if (ret != SSL_TLSEXT_ERR_OK)
 | 
				
			||||||
 | 
							ERR_print_errors(err);
 | 
				
			||||||
 | 
						if (aia)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							OPENSSL_free(host);
 | 
				
			||||||
 | 
							OPENSSL_free(path);
 | 
				
			||||||
 | 
							OPENSSL_free(port);
 | 
				
			||||||
 | 
							X509_email_free(aia);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (id)
 | 
				
			||||||
 | 
							OCSP_CERTID_free(id);
 | 
				
			||||||
 | 
						if (req)
 | 
				
			||||||
 | 
							OCSP_REQUEST_free(req);
 | 
				
			||||||
 | 
						if (resp)
 | 
				
			||||||
 | 
							OCSP_RESPONSE_free(resp);
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
						err:
 | 
				
			||||||
 | 
						ret = SSL_TLSEXT_ERR_ALERT_FATAL;
 | 
				
			||||||
 | 
						goto done;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
int MAIN(int, char **);
 | 
					int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char *argv[])
 | 
					int MAIN(int argc, char *argv[])
 | 
				
			||||||
@@ -545,10 +759,7 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
	int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0;
 | 
						int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0;
 | 
				
			||||||
	int state=0;
 | 
						int state=0;
 | 
				
			||||||
	SSL_METHOD *meth=NULL;
 | 
						SSL_METHOD *meth=NULL;
 | 
				
			||||||
#ifdef sock_type
 | 
					        int socket_type=SOCK_STREAM;
 | 
				
			||||||
#undef sock_type
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    int sock_type=SOCK_STREAM;
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	ENGINE *e=NULL;
 | 
						ENGINE *e=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -559,6 +770,14 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
	int s_dcert_format = FORMAT_PEM, s_dkey_format = FORMAT_PEM;
 | 
						int s_dcert_format = FORMAT_PEM, s_dkey_format = FORMAT_PEM;
 | 
				
			||||||
	X509 *s_cert = NULL, *s_dcert = NULL;
 | 
						X509 *s_cert = NULL, *s_dcert = NULL;
 | 
				
			||||||
	EVP_PKEY *s_key = NULL, *s_dkey = NULL;
 | 
						EVP_PKEY *s_key = NULL, *s_dkey = NULL;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						EVP_PKEY *s_key2 = NULL;
 | 
				
			||||||
 | 
						X509 *s_cert2 = NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					        tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
					#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
				
			||||||
	meth=SSLv23_server_method();
 | 
						meth=SSLv23_server_method();
 | 
				
			||||||
@@ -695,7 +914,7 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK;
 | 
								vflags |= X509_V_FLAG_CRL_CHECK;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-crl_check") == 0)
 | 
							else if (strcmp(*argv,"-crl_check_all") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
 | 
								vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -724,6 +943,37 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		else if	(strcmp(*argv,"-debug") == 0)
 | 
							else if	(strcmp(*argv,"-debug") == 0)
 | 
				
			||||||
			{ s_debug=1; }
 | 
								{ s_debug=1; }
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-tlsextdebug") == 0)
 | 
				
			||||||
 | 
								s_tlsextdebug=1;
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-status") == 0)
 | 
				
			||||||
 | 
								s_tlsextstatus=1;
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-status_verbose") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								s_tlsextstatus=1;
 | 
				
			||||||
 | 
								tlscstatp.verbose = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else if (!strcmp(*argv, "-status_timeout"))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								s_tlsextstatus=1;
 | 
				
			||||||
 | 
					                        if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								tlscstatp.timeout = atoi(*(++argv));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else if (!strcmp(*argv, "-status_url"))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								s_tlsextstatus=1;
 | 
				
			||||||
 | 
					                        if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								if (!OCSP_parse_url(*(++argv),
 | 
				
			||||||
 | 
										&tlscstatp.host,
 | 
				
			||||||
 | 
										&tlscstatp.port,
 | 
				
			||||||
 | 
										&tlscstatp.path,
 | 
				
			||||||
 | 
										&tlscstatp.use_ssl))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(bio_err, "Error parsing URL\n");
 | 
				
			||||||
 | 
									goto bad;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else if	(strcmp(*argv,"-msg") == 0)
 | 
							else if	(strcmp(*argv,"-msg") == 0)
 | 
				
			||||||
			{ s_msg=1; }
 | 
								{ s_msg=1; }
 | 
				
			||||||
		else if	(strcmp(*argv,"-hack") == 0)
 | 
							else if	(strcmp(*argv,"-hack") == 0)
 | 
				
			||||||
@@ -754,6 +1004,10 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
			{ off|=SSL_OP_NO_SSLv3; }
 | 
								{ off|=SSL_OP_NO_SSLv3; }
 | 
				
			||||||
		else if	(strcmp(*argv,"-no_tls1") == 0)
 | 
							else if	(strcmp(*argv,"-no_tls1") == 0)
 | 
				
			||||||
			{ off|=SSL_OP_NO_TLSv1; }
 | 
								{ off|=SSL_OP_NO_TLSv1; }
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-no_ticket") == 0)
 | 
				
			||||||
 | 
								{ off|=SSL_OP_NO_TICKET; }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_SSL2
 | 
					#ifndef OPENSSL_NO_SSL2
 | 
				
			||||||
		else if	(strcmp(*argv,"-ssl2") == 0)
 | 
							else if	(strcmp(*argv,"-ssl2") == 0)
 | 
				
			||||||
			{ meth=SSLv2_server_method(); }
 | 
								{ meth=SSLv2_server_method(); }
 | 
				
			||||||
@@ -770,7 +1024,7 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
		else if	(strcmp(*argv,"-dtls1") == 0)
 | 
							else if	(strcmp(*argv,"-dtls1") == 0)
 | 
				
			||||||
			{ 
 | 
								{ 
 | 
				
			||||||
			meth=DTLSv1_server_method();
 | 
								meth=DTLSv1_server_method();
 | 
				
			||||||
			sock_type = SOCK_DGRAM;
 | 
								socket_type = SOCK_DGRAM;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-timeout") == 0)
 | 
							else if (strcmp(*argv,"-timeout") == 0)
 | 
				
			||||||
			enable_timeouts = 1;
 | 
								enable_timeouts = 1;
 | 
				
			||||||
@@ -799,6 +1053,25 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			inrand= *(++argv);
 | 
								inrand= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-servername") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								tlsextcbp.servername= *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-servername_fatal") == 0)
 | 
				
			||||||
 | 
								{ tlsextcbp.extension_error = SSL_TLSEXT_ERR_ALERT_FATAL; }
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-cert2") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								s_cert_file2= *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-key2") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								s_key_file2= *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
								BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
				
			||||||
@@ -831,6 +1104,10 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (s_key_file == NULL)
 | 
						if (s_key_file == NULL)
 | 
				
			||||||
		s_key_file = s_cert_file;
 | 
							s_key_file = s_cert_file;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (s_key_file2 == NULL)
 | 
				
			||||||
 | 
							s_key_file2 = s_cert_file2;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (nocert == 0)
 | 
						if (nocert == 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -850,8 +1127,29 @@ bad:
 | 
				
			|||||||
			ERR_print_errors(bio_err);
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (tlsextcbp.servername) 
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								s_key2 = load_key(bio_err, s_key_file2, s_key_format, 0, pass, e,
 | 
				
			||||||
 | 
									"second server certificate private key file");
 | 
				
			||||||
 | 
								if (!s_key2)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								s_cert2 = load_cert(bio_err,s_cert_file2,s_cert_format,
 | 
				
			||||||
 | 
									NULL, e, "second server certificate file");
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if (!s_cert2)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	if (s_dcert_file)
 | 
						if (s_dcert_file)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -908,6 +1206,10 @@ bad:
 | 
				
			|||||||
		s_key_file=NULL;
 | 
							s_key_file=NULL;
 | 
				
			||||||
		s_dcert_file=NULL;
 | 
							s_dcert_file=NULL;
 | 
				
			||||||
		s_dkey_file=NULL;
 | 
							s_dkey_file=NULL;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							s_cert_file2=NULL;
 | 
				
			||||||
 | 
							s_key_file2=NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx=SSL_CTX_new(meth);
 | 
						ctx=SSL_CTX_new(meth);
 | 
				
			||||||
@@ -939,7 +1241,7 @@ bad:
 | 
				
			|||||||
	/* DTLS: partial reads end up discarding unread UDP bytes :-( 
 | 
						/* DTLS: partial reads end up discarding unread UDP bytes :-( 
 | 
				
			||||||
	 * Setting read ahead solves this problem.
 | 
						 * Setting read ahead solves this problem.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (sock_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
 | 
						if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
 | 
						if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -966,6 +1268,62 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	store = SSL_CTX_get_cert_store(ctx);
 | 
						store = SSL_CTX_get_cert_store(ctx);
 | 
				
			||||||
	X509_STORE_set_flags(store, vflags);
 | 
						X509_STORE_set_flags(store, vflags);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (s_cert2)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ctx2=SSL_CTX_new(meth);
 | 
				
			||||||
 | 
							if (ctx2 == NULL)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (ctx2)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(bio_s_out,"Setting secondary ctx parameters\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (session_id_prefix)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if(strlen(session_id_prefix) >= 32)
 | 
				
			||||||
 | 
									BIO_printf(bio_err,
 | 
				
			||||||
 | 
										"warning: id_prefix is too long, only one new session will be possible\n");
 | 
				
			||||||
 | 
								else if(strlen(session_id_prefix) >= 16)
 | 
				
			||||||
 | 
									BIO_printf(bio_err,
 | 
				
			||||||
 | 
										"warning: id_prefix is too long if you use SSLv2\n");
 | 
				
			||||||
 | 
								if(!SSL_CTX_set_generate_session_id(ctx2, generate_session_id))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(bio_err,"error setting 'id_prefix'\n");
 | 
				
			||||||
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"id_prefix '%s' set.\n", session_id_prefix);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							SSL_CTX_set_quiet_shutdown(ctx2,1);
 | 
				
			||||||
 | 
							if (bugs) SSL_CTX_set_options(ctx2,SSL_OP_ALL);
 | 
				
			||||||
 | 
							if (hack) SSL_CTX_set_options(ctx2,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
 | 
				
			||||||
 | 
							SSL_CTX_set_options(ctx2,off);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* DTLS: partial reads end up discarding unread UDP bytes :-( 
 | 
				
			||||||
 | 
							 * Setting read ahead solves this problem.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx2, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							SSL_CTX_sess_set_cache_size(ctx2,128);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ((!SSL_CTX_load_verify_locations(ctx2,CAfile,CApath)) ||
 | 
				
			||||||
 | 
								(!SSL_CTX_set_default_verify_paths(ctx2)))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							store = SSL_CTX_get_cert_store(ctx2);
 | 
				
			||||||
 | 
							X509_STORE_set_flags(store, vflags);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_DH
 | 
					#ifndef OPENSSL_NO_DH
 | 
				
			||||||
	if (!no_dhe)
 | 
						if (!no_dhe)
 | 
				
			||||||
@@ -989,6 +1347,24 @@ bad:
 | 
				
			|||||||
		(void)BIO_flush(bio_s_out);
 | 
							(void)BIO_flush(bio_s_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SSL_CTX_set_tmp_dh(ctx,dh);
 | 
							SSL_CTX_set_tmp_dh(ctx,dh);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (ctx2)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (!dhfile)
 | 
				
			||||||
 | 
									{ 
 | 
				
			||||||
 | 
									DH *dh2=load_dh_param(s_cert_file2);
 | 
				
			||||||
 | 
									if (dh2 != NULL)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										BIO_printf(bio_s_out,"Setting temp DH parameters\n");
 | 
				
			||||||
 | 
										(void)BIO_flush(bio_s_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										DH_free(dh);
 | 
				
			||||||
 | 
										dh = dh2;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								SSL_CTX_set_tmp_dh(ctx2,dh);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		DH_free(dh);
 | 
							DH_free(dh);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1034,12 +1410,20 @@ bad:
 | 
				
			|||||||
		(void)BIO_flush(bio_s_out);
 | 
							(void)BIO_flush(bio_s_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SSL_CTX_set_tmp_ecdh(ctx,ecdh);
 | 
							SSL_CTX_set_tmp_ecdh(ctx,ecdh);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (ctx2) 
 | 
				
			||||||
 | 
								SSL_CTX_set_tmp_ecdh(ctx2,ecdh);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		EC_KEY_free(ecdh);
 | 
							EC_KEY_free(ecdh);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if (!set_cert_key_stuff(ctx,s_cert,s_key))
 | 
						if (!set_cert_key_stuff(ctx,s_cert,s_key))
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (ctx2 && !set_cert_key_stuff(ctx2,s_cert2,s_key2))
 | 
				
			||||||
 | 
							goto end; 
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	if (s_dcert != NULL)
 | 
						if (s_dcert != NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (!set_cert_key_stuff(ctx,s_dcert,s_dkey))
 | 
							if (!set_cert_key_stuff(ctx,s_dcert,s_dkey))
 | 
				
			||||||
@@ -1049,7 +1433,13 @@ bad:
 | 
				
			|||||||
#ifndef OPENSSL_NO_RSA
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
#if 1
 | 
					#if 1
 | 
				
			||||||
	if (!no_tmp_rsa)
 | 
						if (!no_tmp_rsa)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
		SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb);
 | 
							SSL_CTX_set_tmp_rsa_callback(ctx,tmp_rsa_cb);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (ctx2) 
 | 
				
			||||||
 | 
								SSL_CTX_set_tmp_rsa_callback(ctx2,tmp_rsa_cb);
 | 
				
			||||||
 | 
					#endif	
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx))
 | 
						if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1065,6 +1455,16 @@ bad:
 | 
				
			|||||||
			ERR_print_errors(bio_err);
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
								if (ctx2)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									if (!SSL_CTX_set_tmp_rsa(ctx2,rsa))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
										goto end;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		RSA_free(rsa);
 | 
							RSA_free(rsa);
 | 
				
			||||||
		BIO_printf(bio_s_out,"\n");
 | 
							BIO_printf(bio_s_out,"\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1076,19 +1476,46 @@ bad:
 | 
				
			|||||||
		BIO_printf(bio_err,"error setting cipher list\n");
 | 
							BIO_printf(bio_err,"error setting cipher list\n");
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (ctx2 && !SSL_CTX_set_cipher_list(ctx2,cipher))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"error setting cipher list\n");
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	SSL_CTX_set_verify(ctx,s_server_verify,verify_callback);
 | 
						SSL_CTX_set_verify(ctx,s_server_verify,verify_callback);
 | 
				
			||||||
	SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context,
 | 
						SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context,
 | 
				
			||||||
		sizeof s_server_session_id_context);
 | 
							sizeof s_server_session_id_context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (CAfile != NULL)
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	    SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
 | 
						if (ctx2)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_CTX_set_verify(ctx2,s_server_verify,verify_callback);
 | 
				
			||||||
 | 
							SSL_CTX_set_session_id_context(ctx2,(void*)&s_server_session_id_context,
 | 
				
			||||||
 | 
								sizeof s_server_session_id_context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							tlsextcbp.biodebug = bio_s_out;
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_callback(ctx2, ssl_servername_cb);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_arg(ctx2, &tlsextcbp);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb);
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (CAfile != NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (ctx2) 
 | 
				
			||||||
 | 
								SSL_CTX_set_client_CA_list(ctx2,SSL_load_client_CA_file(CAfile));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	BIO_printf(bio_s_out,"ACCEPT\n");
 | 
						BIO_printf(bio_s_out,"ACCEPT\n");
 | 
				
			||||||
	if (www)
 | 
						if (www)
 | 
				
			||||||
		do_server(port,sock_type,&accept_socket,www_body, context);
 | 
							do_server(port,socket_type,&accept_socket,www_body, context);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		do_server(port,sock_type,&accept_socket,sv_body, context);
 | 
							do_server(port,socket_type,&accept_socket,sv_body, context);
 | 
				
			||||||
	print_stats(bio_s_out,ctx);
 | 
						print_stats(bio_s_out,ctx);
 | 
				
			||||||
	ret=0;
 | 
						ret=0;
 | 
				
			||||||
end:
 | 
					end:
 | 
				
			||||||
@@ -1105,6 +1532,13 @@ end:
 | 
				
			|||||||
		OPENSSL_free(pass);
 | 
							OPENSSL_free(pass);
 | 
				
			||||||
	if (dpass)
 | 
						if (dpass)
 | 
				
			||||||
		OPENSSL_free(dpass);
 | 
							OPENSSL_free(dpass);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (ctx2 != NULL) SSL_CTX_free(ctx2);
 | 
				
			||||||
 | 
						if (s_cert2)
 | 
				
			||||||
 | 
							X509_free(s_cert2);
 | 
				
			||||||
 | 
						if (s_key2)
 | 
				
			||||||
 | 
							EVP_PKEY_free(s_key2);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	if (bio_s_out != NULL)
 | 
						if (bio_s_out != NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
        BIO_free(bio_s_out);
 | 
					        BIO_free(bio_s_out);
 | 
				
			||||||
@@ -1171,6 +1605,19 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (con == NULL) {
 | 
						if (con == NULL) {
 | 
				
			||||||
		con=SSL_new(ctx);
 | 
							con=SSL_new(ctx);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (s_tlsextdebug)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_callback(con, tlsext_cb);
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_arg(con, bio_s_out);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (s_tlsextstatus)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_status_cb(ctx, cert_status_cb);
 | 
				
			||||||
 | 
							tlscstatp.err = bio_err;
 | 
				
			||||||
 | 
							SSL_CTX_set_tlsext_status_arg(ctx, &tlscstatp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_KRB5
 | 
					#ifndef OPENSSL_NO_KRB5
 | 
				
			||||||
		if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
							if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -1241,6 +1688,13 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
		SSL_set_msg_callback(con, msg_cb);
 | 
							SSL_set_msg_callback(con, msg_cb);
 | 
				
			||||||
		SSL_set_msg_callback_arg(con, bio_s_out);
 | 
							SSL_set_msg_callback_arg(con, bio_s_out);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (s_tlsextdebug)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_callback(con, tlsext_cb);
 | 
				
			||||||
 | 
							SSL_set_tlsext_debug_arg(con, bio_s_out);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	width=s+1;
 | 
						width=s+1;
 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
@@ -1606,6 +2060,13 @@ static int www_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
	if (!BIO_set_write_buffer_size(io,bufsize)) goto err;
 | 
						if (!BIO_set_write_buffer_size(io,bufsize)) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((con=SSL_new(ctx)) == NULL) goto err;
 | 
						if ((con=SSL_new(ctx)) == NULL) goto err;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
							if (s_tlsextdebug)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								SSL_set_tlsext_debug_callback(con, tlsext_cb);
 | 
				
			||||||
 | 
								SSL_set_tlsext_debug_arg(con, bio_s_out);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_KRB5
 | 
					#ifndef OPENSSL_NO_KRB5
 | 
				
			||||||
	if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
						if ((con->kssl_ctx = kssl_ctx_new()) != NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,6 +145,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (!strcmp (*args, "-des")) 
 | 
							else if (!strcmp (*args, "-des")) 
 | 
				
			||||||
				cipher = EVP_des_cbc();
 | 
									cipher = EVP_des_cbc();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							else if (!strcmp (*args, "-seed")) 
 | 
				
			||||||
 | 
									cipher = EVP_seed_cbc();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
		else if (!strcmp (*args, "-rc2-40")) 
 | 
							else if (!strcmp (*args, "-rc2-40")) 
 | 
				
			||||||
				cipher = EVP_rc2_40_cbc();
 | 
									cipher = EVP_rc2_40_cbc();
 | 
				
			||||||
@@ -423,6 +427,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf (bio_err, "-des3          encrypt with triple DES\n");
 | 
							BIO_printf (bio_err, "-des3          encrypt with triple DES\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-des           encrypt with DES\n");
 | 
							BIO_printf (bio_err, "-des           encrypt with DES\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							BIO_printf (bio_err, "-seed          encrypt with SEED\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
		BIO_printf (bio_err, "-rc2-40        encrypt with RC2-40 (default)\n");
 | 
							BIO_printf (bio_err, "-rc2-40        encrypt with RC2-40 (default)\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-rc2-64        encrypt with RC2-64\n");
 | 
							BIO_printf (bio_err, "-rc2-64        encrypt with RC2-64\n");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										140
									
								
								apps/speed.c
									
									
									
									
									
								
							
							
						
						
									
										140
									
								
								apps/speed.c
									
									
									
									
									
								
							@@ -201,6 +201,9 @@
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
#include <openssl/idea.h>
 | 
					#include <openssl/idea.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
					#include <openssl/seed.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_BF
 | 
					#ifndef OPENSSL_NO_BF
 | 
				
			||||||
#include <openssl/blowfish.h>
 | 
					#include <openssl/blowfish.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -272,7 +275,7 @@ static void print_result(int alg,int run_no,int count,double time_used);
 | 
				
			|||||||
static int do_multi(int multi);
 | 
					static int do_multi(int multi);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ALGOR_NUM	24
 | 
					#define ALGOR_NUM	28
 | 
				
			||||||
#define SIZE_NUM	5
 | 
					#define SIZE_NUM	5
 | 
				
			||||||
#define RSA_NUM		4
 | 
					#define RSA_NUM		4
 | 
				
			||||||
#define DSA_NUM		3
 | 
					#define DSA_NUM		3
 | 
				
			||||||
@@ -282,11 +285,12 @@ static int do_multi(int multi);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static const char *names[ALGOR_NUM]={
 | 
					static const char *names[ALGOR_NUM]={
 | 
				
			||||||
  "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",
 | 
					  "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",
 | 
				
			||||||
  "des cbc","des ede3","idea cbc",
 | 
					  "des cbc","des ede3","idea cbc","seed cbc",
 | 
				
			||||||
  "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
 | 
					  "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
 | 
				
			||||||
  "aes-128 cbc","aes-192 cbc","aes-256 cbc",
 | 
					  "aes-128 cbc","aes-192 cbc","aes-256 cbc",
 | 
				
			||||||
  "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
 | 
					  "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
 | 
				
			||||||
  "evp","sha256","sha512"};
 | 
					  "evp","sha256","sha512",
 | 
				
			||||||
 | 
					  "aes-128 ige","aes-192 ige","aes-256 ige"};
 | 
				
			||||||
static double results[ALGOR_NUM][SIZE_NUM];
 | 
					static double results[ALGOR_NUM][SIZE_NUM];
 | 
				
			||||||
static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
 | 
					static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
 | 
				
			||||||
static double rsa_results[RSA_NUM][2];
 | 
					static double rsa_results[RSA_NUM][2];
 | 
				
			||||||
@@ -533,6 +537,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
	IDEA_KEY_SCHEDULE idea_ks;
 | 
						IDEA_KEY_SCHEDULE idea_ks;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						SEED_KEY_SCHEDULE seed_ks;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_BF
 | 
					#ifndef OPENSSL_NO_BF
 | 
				
			||||||
	BF_KEY bf_ks;
 | 
						BF_KEY bf_ks;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -570,7 +577,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#define MAX_BLOCK_SIZE 64
 | 
					#define MAX_BLOCK_SIZE 64
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	unsigned char DES_iv[8];
 | 
						unsigned char DES_iv[8];
 | 
				
			||||||
	unsigned char iv[MAX_BLOCK_SIZE/8];
 | 
						unsigned char iv[2*MAX_BLOCK_SIZE/8];
 | 
				
			||||||
#ifndef OPENSSL_NO_DES
 | 
					#ifndef OPENSSL_NO_DES
 | 
				
			||||||
	DES_cblock *buf_as_des_cblock = NULL;
 | 
						DES_cblock *buf_as_des_cblock = NULL;
 | 
				
			||||||
	static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
 | 
						static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
 | 
				
			||||||
@@ -597,19 +604,23 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#define	D_CBC_DES	8
 | 
					#define	D_CBC_DES	8
 | 
				
			||||||
#define	D_EDE3_DES	9
 | 
					#define	D_EDE3_DES	9
 | 
				
			||||||
#define	D_CBC_IDEA	10
 | 
					#define	D_CBC_IDEA	10
 | 
				
			||||||
#define	D_CBC_RC2	11
 | 
					#define	D_CBC_SEED	11
 | 
				
			||||||
#define	D_CBC_RC5	12
 | 
					#define	D_CBC_RC2	12
 | 
				
			||||||
#define	D_CBC_BF	13
 | 
					#define	D_CBC_RC5	13
 | 
				
			||||||
#define	D_CBC_CAST	14
 | 
					#define	D_CBC_BF	14
 | 
				
			||||||
#define D_CBC_128_AES	15
 | 
					#define	D_CBC_CAST	15
 | 
				
			||||||
#define D_CBC_192_AES	16
 | 
					#define D_CBC_128_AES	16
 | 
				
			||||||
#define D_CBC_256_AES	17
 | 
					#define D_CBC_192_AES	17
 | 
				
			||||||
#define D_CBC_128_CML   18 
 | 
					#define D_CBC_256_AES	18
 | 
				
			||||||
#define D_CBC_192_CML   19
 | 
					#define D_CBC_128_CML   19 
 | 
				
			||||||
#define D_CBC_256_CML   20 
 | 
					#define D_CBC_192_CML   20
 | 
				
			||||||
#define D_EVP		21
 | 
					#define D_CBC_256_CML   21 
 | 
				
			||||||
#define D_SHA256	22	
 | 
					#define D_EVP		22
 | 
				
			||||||
#define D_SHA512	23
 | 
					#define D_SHA256	23	
 | 
				
			||||||
 | 
					#define D_SHA512	24
 | 
				
			||||||
 | 
					#define D_IGE_128_AES   25
 | 
				
			||||||
 | 
					#define D_IGE_192_AES   26
 | 
				
			||||||
 | 
					#define D_IGE_256_AES   27
 | 
				
			||||||
	double d=0.0;
 | 
						double d=0.0;
 | 
				
			||||||
	long c[ALGOR_NUM][SIZE_NUM];
 | 
						long c[ALGOR_NUM][SIZE_NUM];
 | 
				
			||||||
#define	R_DSA_512	0
 | 
					#define	R_DSA_512	0
 | 
				
			||||||
@@ -950,7 +961,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (strcmp(*argv,"aes-128-cbc") == 0) doit[D_CBC_128_AES]=1;
 | 
								if (strcmp(*argv,"aes-128-cbc") == 0) doit[D_CBC_128_AES]=1;
 | 
				
			||||||
		else	if (strcmp(*argv,"aes-192-cbc") == 0) doit[D_CBC_192_AES]=1;
 | 
							else	if (strcmp(*argv,"aes-192-cbc") == 0) doit[D_CBC_192_AES]=1;
 | 
				
			||||||
		else	if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1;
 | 
							else	if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1;
 | 
				
			||||||
		else
 | 
							else    if (strcmp(*argv,"aes-128-ige") == 0) doit[D_IGE_128_AES]=1;
 | 
				
			||||||
 | 
							else	if (strcmp(*argv,"aes-192-ige") == 0) doit[D_IGE_192_AES]=1;
 | 
				
			||||||
 | 
							else	if (strcmp(*argv,"aes-256-ige") == 0) doit[D_IGE_256_AES]=1;
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_CAMELLIA
 | 
					#ifndef OPENSSL_NO_CAMELLIA
 | 
				
			||||||
			if (strcmp(*argv,"camellia-128-cbc") == 0) doit[D_CBC_128_CML]=1;
 | 
								if (strcmp(*argv,"camellia-128-cbc") == 0) doit[D_CBC_128_CML]=1;
 | 
				
			||||||
@@ -999,6 +1013,11 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"idea") == 0) doit[D_CBC_IDEA]=1;
 | 
							else if (strcmp(*argv,"idea") == 0) doit[D_CBC_IDEA]=1;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
							     if (strcmp(*argv,"seed-cbc") == 0) doit[D_CBC_SEED]=1;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"seed") == 0) doit[D_CBC_SEED]=1;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_BF
 | 
					#ifndef OPENSSL_NO_BF
 | 
				
			||||||
		     if (strcmp(*argv,"bf-cbc") == 0) doit[D_CBC_BF]=1;
 | 
							     if (strcmp(*argv,"bf-cbc") == 0) doit[D_CBC_BF]=1;
 | 
				
			||||||
		else if (strcmp(*argv,"blowfish") == 0) doit[D_CBC_BF]=1;
 | 
							else if (strcmp(*argv,"blowfish") == 0) doit[D_CBC_BF]=1;
 | 
				
			||||||
@@ -1144,6 +1163,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
			BIO_printf(bio_err,"idea-cbc ");
 | 
								BIO_printf(bio_err,"idea-cbc ");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"seed-cbc ");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
			BIO_printf(bio_err,"rc2-cbc  ");
 | 
								BIO_printf(bio_err,"rc2-cbc  ");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1153,7 +1175,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_BF
 | 
					#ifndef OPENSSL_NO_BF
 | 
				
			||||||
			BIO_printf(bio_err,"bf-cbc");
 | 
								BIO_printf(bio_err,"bf-cbc");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_RC2) || \
 | 
					#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_SEED) || !defined(OPENSSL_NO_RC2) || \
 | 
				
			||||||
    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_RC5)
 | 
					    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_RC5)
 | 
				
			||||||
			BIO_printf(bio_err,"\n");
 | 
								BIO_printf(bio_err,"\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1162,6 +1184,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_AES
 | 
					#ifndef OPENSSL_NO_AES
 | 
				
			||||||
			BIO_printf(bio_err,"aes-128-cbc aes-192-cbc aes-256-cbc ");
 | 
								BIO_printf(bio_err,"aes-128-cbc aes-192-cbc aes-256-cbc ");
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"aes-128-ige aes-192-ige aes-256-ige ");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_CAMELLIA
 | 
					#ifndef OPENSSL_NO_CAMELLIA
 | 
				
			||||||
			BIO_printf(bio_err,"\n");
 | 
								BIO_printf(bio_err,"\n");
 | 
				
			||||||
@@ -1195,6 +1218,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
			BIO_printf(bio_err,"idea     ");
 | 
								BIO_printf(bio_err,"idea     ");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"seed     ");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
			BIO_printf(bio_err,"rc2      ");
 | 
								BIO_printf(bio_err,"rc2      ");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1213,10 +1239,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_BF
 | 
					#ifndef OPENSSL_NO_BF
 | 
				
			||||||
			BIO_printf(bio_err,"blowfish");
 | 
								BIO_printf(bio_err,"blowfish");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_RC2) || \
 | 
					#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_SEED) || \
 | 
				
			||||||
    !defined(OPENSSL_NO_DES) || !defined(OPENSSL_NO_RSA) || \
 | 
					    !defined(OPENSSL_NO_RC2) || !defined(OPENSSL_NO_DES) || \
 | 
				
			||||||
    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_AES) || \
 | 
					    !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_BF) || \
 | 
				
			||||||
    !defined(OPENSSL_NO_CAMELLIA) 
 | 
					    !defined(OPENSSL_NO_AES) || !defined(OPENSSL_NO_CAMELLIA)
 | 
				
			||||||
			BIO_printf(bio_err,"\n");
 | 
								BIO_printf(bio_err,"\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1318,6 +1344,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#ifndef OPENSSL_NO_IDEA
 | 
					#ifndef OPENSSL_NO_IDEA
 | 
				
			||||||
	idea_set_encrypt_key(key16,&idea_ks);
 | 
						idea_set_encrypt_key(key16,&idea_ks);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						SEED_set_key(key16,&seed_ks);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC4
 | 
					#ifndef OPENSSL_NO_RC4
 | 
				
			||||||
	RC4_set_key(&rc4_ks,16,key16);
 | 
						RC4_set_key(&rc4_ks,16,key16);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1361,6 +1390,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	c[D_CBC_DES][0]=count;
 | 
						c[D_CBC_DES][0]=count;
 | 
				
			||||||
	c[D_EDE3_DES][0]=count/3;
 | 
						c[D_EDE3_DES][0]=count/3;
 | 
				
			||||||
	c[D_CBC_IDEA][0]=count;
 | 
						c[D_CBC_IDEA][0]=count;
 | 
				
			||||||
 | 
						c[D_CBC_SEED][0]=count;
 | 
				
			||||||
	c[D_CBC_RC2][0]=count;
 | 
						c[D_CBC_RC2][0]=count;
 | 
				
			||||||
	c[D_CBC_RC5][0]=count;
 | 
						c[D_CBC_RC5][0]=count;
 | 
				
			||||||
	c[D_CBC_BF][0]=count;
 | 
						c[D_CBC_BF][0]=count;
 | 
				
			||||||
@@ -1373,6 +1403,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	c[D_CBC_256_CML][0]=count;
 | 
						c[D_CBC_256_CML][0]=count;
 | 
				
			||||||
	c[D_SHA256][0]=count;
 | 
						c[D_SHA256][0]=count;
 | 
				
			||||||
	c[D_SHA512][0]=count;
 | 
						c[D_SHA512][0]=count;
 | 
				
			||||||
 | 
						c[D_IGE_128_AES][0]=count;
 | 
				
			||||||
 | 
						c[D_IGE_192_AES][0]=count;
 | 
				
			||||||
 | 
						c[D_IGE_256_AES][0]=count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i=1; i<SIZE_NUM; i++)
 | 
						for (i=1; i<SIZE_NUM; i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1396,6 +1429,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		c[D_CBC_DES][i]=c[D_CBC_DES][i-1]*l0/l1;
 | 
							c[D_CBC_DES][i]=c[D_CBC_DES][i-1]*l0/l1;
 | 
				
			||||||
		c[D_EDE3_DES][i]=c[D_EDE3_DES][i-1]*l0/l1;
 | 
							c[D_EDE3_DES][i]=c[D_EDE3_DES][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_IDEA][i]=c[D_CBC_IDEA][i-1]*l0/l1;
 | 
							c[D_CBC_IDEA][i]=c[D_CBC_IDEA][i-1]*l0/l1;
 | 
				
			||||||
 | 
							c[D_CBC_SEED][i]=c[D_CBC_SEED][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_RC2][i]=c[D_CBC_RC2][i-1]*l0/l1;
 | 
							c[D_CBC_RC2][i]=c[D_CBC_RC2][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_RC5][i]=c[D_CBC_RC5][i-1]*l0/l1;
 | 
							c[D_CBC_RC5][i]=c[D_CBC_RC5][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_BF][i]=c[D_CBC_BF][i-1]*l0/l1;
 | 
							c[D_CBC_BF][i]=c[D_CBC_BF][i-1]*l0/l1;
 | 
				
			||||||
@@ -1406,6 +1440,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 		c[D_CBC_128_CML][i]=c[D_CBC_128_CML][i-1]*l0/l1;
 | 
					 		c[D_CBC_128_CML][i]=c[D_CBC_128_CML][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_192_CML][i]=c[D_CBC_192_CML][i-1]*l0/l1;
 | 
							c[D_CBC_192_CML][i]=c[D_CBC_192_CML][i-1]*l0/l1;
 | 
				
			||||||
		c[D_CBC_256_CML][i]=c[D_CBC_256_CML][i-1]*l0/l1;
 | 
							c[D_CBC_256_CML][i]=c[D_CBC_256_CML][i-1]*l0/l1;
 | 
				
			||||||
 | 
							c[D_IGE_128_AES][i]=c[D_IGE_128_AES][i-1]*l0/l1;
 | 
				
			||||||
 | 
							c[D_IGE_192_AES][i]=c[D_IGE_192_AES][i-1]*l0/l1;
 | 
				
			||||||
 | 
							c[D_IGE_256_AES][i]=c[D_IGE_256_AES][i-1]*l0/l1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#ifndef OPENSSL_NO_RSA
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
	rsa_c[R_RSA_512][0]=count/2000;
 | 
						rsa_c[R_RSA_512][0]=count/2000;
 | 
				
			||||||
@@ -1799,6 +1836,48 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (doit[D_IGE_128_AES])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							for (j=0; j<SIZE_NUM; j++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								print_message(names[D_IGE_128_AES],c[D_IGE_128_AES][j],lengths[j]);
 | 
				
			||||||
 | 
								Time_F(START);
 | 
				
			||||||
 | 
								for (count=0,run=1; COND(c[D_IGE_128_AES][j]); count++)
 | 
				
			||||||
 | 
									AES_ige_encrypt(buf,buf2,
 | 
				
			||||||
 | 
										(unsigned long)lengths[j],&aes_ks1,
 | 
				
			||||||
 | 
										iv,AES_ENCRYPT);
 | 
				
			||||||
 | 
								d=Time_F(STOP);
 | 
				
			||||||
 | 
								print_result(D_IGE_128_AES,j,count,d);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (doit[D_IGE_192_AES])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							for (j=0; j<SIZE_NUM; j++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								print_message(names[D_IGE_192_AES],c[D_IGE_192_AES][j],lengths[j]);
 | 
				
			||||||
 | 
								Time_F(START);
 | 
				
			||||||
 | 
								for (count=0,run=1; COND(c[D_IGE_192_AES][j]); count++)
 | 
				
			||||||
 | 
									AES_ige_encrypt(buf,buf2,
 | 
				
			||||||
 | 
										(unsigned long)lengths[j],&aes_ks2,
 | 
				
			||||||
 | 
										iv,AES_ENCRYPT);
 | 
				
			||||||
 | 
								d=Time_F(STOP);
 | 
				
			||||||
 | 
								print_result(D_IGE_192_AES,j,count,d);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (doit[D_IGE_256_AES])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							for (j=0; j<SIZE_NUM; j++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								print_message(names[D_IGE_256_AES],c[D_IGE_256_AES][j],lengths[j]);
 | 
				
			||||||
 | 
								Time_F(START);
 | 
				
			||||||
 | 
								for (count=0,run=1; COND(c[D_IGE_256_AES][j]); count++)
 | 
				
			||||||
 | 
									AES_ige_encrypt(buf,buf2,
 | 
				
			||||||
 | 
										(unsigned long)lengths[j],&aes_ks3,
 | 
				
			||||||
 | 
										iv,AES_ENCRYPT);
 | 
				
			||||||
 | 
								d=Time_F(STOP);
 | 
				
			||||||
 | 
								print_result(D_IGE_256_AES,j,count,d);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_CAMELLIA
 | 
					#ifndef OPENSSL_NO_CAMELLIA
 | 
				
			||||||
	if (doit[D_CBC_128_CML])
 | 
						if (doit[D_CBC_128_CML])
 | 
				
			||||||
@@ -1861,6 +1940,21 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SEED
 | 
				
			||||||
 | 
						if (doit[D_CBC_SEED])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							for (j=0; j<SIZE_NUM; j++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								print_message(names[D_CBC_SEED],c[D_CBC_SEED][j],lengths[j]);
 | 
				
			||||||
 | 
								Time_F(START);
 | 
				
			||||||
 | 
								for (count=0,run=1; COND(c[D_CBC_SEED][j]); count++)
 | 
				
			||||||
 | 
									SEED_cbc_encrypt(buf,buf,
 | 
				
			||||||
 | 
										(unsigned long)lengths[j],&seed_ks,iv,1);
 | 
				
			||||||
 | 
								d=Time_F(STOP);
 | 
				
			||||||
 | 
								print_result(D_CBC_SEED,j,count,d);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_RC2
 | 
					#ifndef OPENSSL_NO_RC2
 | 
				
			||||||
	if (doit[D_CBC_RC2])
 | 
						if (doit[D_CBC_RC2])
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								apps/x509.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								apps/x509.c
									
									
									
									
									
								
							@@ -114,6 +114,7 @@ static const char *x509_usage[]={
 | 
				
			|||||||
" -alias          - output certificate alias\n",
 | 
					" -alias          - output certificate alias\n",
 | 
				
			||||||
" -noout          - no certificate output\n",
 | 
					" -noout          - no certificate output\n",
 | 
				
			||||||
" -ocspid         - print OCSP hash values for the subject name and public key\n",
 | 
					" -ocspid         - print OCSP hash values for the subject name and public key\n",
 | 
				
			||||||
 | 
					" -ocspurl        - print OCSP Responder URL(s)\n",
 | 
				
			||||||
" -trustout       - output a \"trusted\" certificate\n",
 | 
					" -trustout       - output a \"trusted\" certificate\n",
 | 
				
			||||||
" -clrtrust       - clear all trusted purposes\n",
 | 
					" -clrtrust       - clear all trusted purposes\n",
 | 
				
			||||||
" -clrreject      - clear all rejected purposes\n",
 | 
					" -clrreject      - clear all rejected purposes\n",
 | 
				
			||||||
@@ -179,6 +180,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int next_serial=0;
 | 
						int next_serial=0;
 | 
				
			||||||
	int subject_hash=0,issuer_hash=0,ocspid=0;
 | 
						int subject_hash=0,issuer_hash=0,ocspid=0;
 | 
				
			||||||
	int noout=0,sign_flag=0,CA_flag=0,CA_createserial=0,email=0;
 | 
						int noout=0,sign_flag=0,CA_flag=0,CA_createserial=0,email=0;
 | 
				
			||||||
 | 
						int ocsp_uri=0;
 | 
				
			||||||
	int trustout=0,clrtrust=0,clrreject=0,aliasout=0,clrext=0;
 | 
						int trustout=0,clrtrust=0,clrreject=0,aliasout=0,clrext=0;
 | 
				
			||||||
	int C=0;
 | 
						int C=0;
 | 
				
			||||||
	int x509req=0,days=DEF_DAYS,modulus=0,pubkey=0;
 | 
						int x509req=0,days=DEF_DAYS,modulus=0,pubkey=0;
 | 
				
			||||||
@@ -378,6 +380,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			C= ++num;
 | 
								C= ++num;
 | 
				
			||||||
		else if (strcmp(*argv,"-email") == 0)
 | 
							else if (strcmp(*argv,"-email") == 0)
 | 
				
			||||||
			email= ++num;
 | 
								email= ++num;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-ocsp_uri") == 0)
 | 
				
			||||||
 | 
								ocsp_uri= ++num;
 | 
				
			||||||
		else if (strcmp(*argv,"-serial") == 0)
 | 
							else if (strcmp(*argv,"-serial") == 0)
 | 
				
			||||||
			serial= ++num;
 | 
								serial= ++num;
 | 
				
			||||||
		else if (strcmp(*argv,"-next_serial") == 0)
 | 
							else if (strcmp(*argv,"-next_serial") == 0)
 | 
				
			||||||
@@ -731,11 +735,14 @@ bad:
 | 
				
			|||||||
				ASN1_INTEGER_free(ser);
 | 
									ASN1_INTEGER_free(ser);
 | 
				
			||||||
				BIO_puts(out, "\n");
 | 
									BIO_puts(out, "\n");
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			else if (email == i) 
 | 
								else if ((email == i) || (ocsp_uri == i))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				int j;
 | 
									int j;
 | 
				
			||||||
				STACK *emlst;
 | 
									STACK *emlst;
 | 
				
			||||||
				emlst = X509_get1_email(x);
 | 
									if (email == i)
 | 
				
			||||||
 | 
										emlst = X509_get1_email(x);
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										emlst = X509_get1_ocsp(x);
 | 
				
			||||||
				for (j = 0; j < sk_num(emlst); j++)
 | 
									for (j = 0; j < sk_num(emlst); j++)
 | 
				
			||||||
					BIO_printf(STDout, "%s\n", sk_value(emlst, j));
 | 
										BIO_printf(STDout, "%s\n", sk_value(emlst, j));
 | 
				
			||||||
				X509_email_free(emlst);
 | 
									X509_email_free(emlst);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								certs/README.RootCerts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								certs/README.RootCerts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					The OpenSSL project does not (any longer) include root CA certificates.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please check out the FAQ:
 | 
				
			||||||
 | 
					  * How can I set up a bundle of commercial root CA certificates?
 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
issuer= CN=5R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
notBefore=Mar 22 08:55:51 2000 GMT
 | 
					 | 
				
			||||||
notAfter=Mar 22 08:55:51 2005 GMT
 | 
					 | 
				
			||||||
subject= CN=5R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICaDCCAdSgAwIBAgIDDIOqMAoGBiskAwMBAgUAMG8xCzAJBgNVBAYTAkRFMT0w
 | 
					 | 
				
			||||||
OwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21tdW5pa2F0
 | 
					 | 
				
			||||||
aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjVSLUNBIDE6UE4w
 | 
					 | 
				
			||||||
IhgPMjAwMDAzMjIwODU1NTFaGA8yMDA1MDMyMjA4NTU1MVowbzELMAkGA1UEBhMC
 | 
					 | 
				
			||||||
REUxPTA7BgNVBAoUNFJlZ3VsaWVydW5nc2JlaMhvcmRlIGbIdXIgVGVsZWtvbW11
 | 
					 | 
				
			||||||
bmlrYXRpb24gdW5kIFBvc3QxITAMBgcCggYBCgcUEwExMBEGA1UEAxQKNVItQ0Eg
 | 
					 | 
				
			||||||
MTpQTjCBoTANBgkqhkiG9w0BAQEFAAOBjwAwgYsCgYEAih5BUycfBpqKhU8RDsaS
 | 
					 | 
				
			||||||
vV5AtzWeXQRColL9CH3t0DKnhjKAlJ8iccFtJNv+d3bh8bb9sh0maRSo647xP7hs
 | 
					 | 
				
			||||||
HTjKgTE4zM5BYNfXvST79OtcMgAzrnDiGjQIIWv8xbfV1MqxxdtZJygrwzRMb9jG
 | 
					 | 
				
			||||||
CAGoJEymoyzAMNG7tSdBWnUCBQDAAAABoxIwEDAOBgNVHQ8BAf8EBAMCAQYwCgYG
 | 
					 | 
				
			||||||
KyQDAwECBQADgYEAOaK8ihVSBUcL2IdVBxZYYUKwMz5m7H3zqhN8W9w+iafWudH6
 | 
					 | 
				
			||||||
b+aahkbENEwzg3C3v5g8nze7v7ssacQze657LHjP+e7ksUDIgcS4R1pU2eN16bjS
 | 
					 | 
				
			||||||
P/qGPF3rhrIEHoK5nJULkjkZYTtNiOvmQ/+G70TXDi3Os/TwLlWRvu+7YLM=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
issuer= CN=6R-Ca 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
notBefore=Feb  1 09:52:17 2001 GMT
 | 
					 | 
				
			||||||
notAfter=Jun  1 09:52:17 2005 GMT
 | 
					 | 
				
			||||||
subject= CN=6R-Ca 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICaDCCAdSgAwIBAgIDMtGNMAoGBiskAwMBAgUAMG8xCzAJBgNVBAYTAkRFMT0w
 | 
					 | 
				
			||||||
OwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21tdW5pa2F0
 | 
					 | 
				
			||||||
aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjZSLUNhIDE6UE4w
 | 
					 | 
				
			||||||
IhgPMjAwMTAyMDEwOTUyMTdaGA8yMDA1MDYwMTA5NTIxN1owbzELMAkGA1UEBhMC
 | 
					 | 
				
			||||||
REUxPTA7BgNVBAoUNFJlZ3VsaWVydW5nc2JlaMhvcmRlIGbIdXIgVGVsZWtvbW11
 | 
					 | 
				
			||||||
bmlrYXRpb24gdW5kIFBvc3QxITAMBgcCggYBCgcUEwExMBEGA1UEAxQKNlItQ2Eg
 | 
					 | 
				
			||||||
MTpQTjCBoTANBgkqhkiG9w0BAQEFAAOBjwAwgYsCgYEAg6KrFSTNXKqe+2GKGeW2
 | 
					 | 
				
			||||||
wTmbVeflNkp5H/YxA9K1zmEn5XjKm0S0jH4Wfms6ipPlURVaFwTfnB1s++AnJAWf
 | 
					 | 
				
			||||||
mayaE9BP/pdIY6WtZGgW6aZc32VDMCMKPWyBNyagsJVDmzlakIA5cXBVa7Xqqd3P
 | 
					 | 
				
			||||||
ew8i2feMnQXcqHfDv02CW88CBQDAAAABoxIwEDAOBgNVHQ8BAf8EBAMCAQYwCgYG
 | 
					 | 
				
			||||||
KyQDAwECBQADgYEAOkqkUwdaTCt8wcJLA2zLuOwL5ADHMWLhv6gr5zEF+VckA6qe
 | 
					 | 
				
			||||||
IVLVf8e7fYlRmzQd+5OJcGglCQJLGT+ZplI3Mjnrd4plkoTNKV4iOzBcvJD7K4tn
 | 
					 | 
				
			||||||
XPvs9wCFcC7QU7PLvc1FDsAlr7e4wyefZRDL+wbqNfI7QZTSF1ubLd9AzeQ=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
 | 
					 | 
				
			||||||
MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
 | 
					 | 
				
			||||||
bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2
 | 
					 | 
				
			||||||
MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
 | 
					 | 
				
			||||||
ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
 | 
					 | 
				
			||||||
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP
 | 
					 | 
				
			||||||
ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk
 | 
					 | 
				
			||||||
hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym
 | 
					 | 
				
			||||||
1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW
 | 
					 | 
				
			||||||
OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb
 | 
					 | 
				
			||||||
2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko
 | 
					 | 
				
			||||||
O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
 | 
					 | 
				
			||||||
AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU
 | 
					 | 
				
			||||||
AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
 | 
					 | 
				
			||||||
BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
 | 
					 | 
				
			||||||
Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb
 | 
					 | 
				
			||||||
LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir
 | 
					 | 
				
			||||||
oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C
 | 
					 | 
				
			||||||
MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
 | 
					 | 
				
			||||||
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,33 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
 | 
					 | 
				
			||||||
MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
 | 
					 | 
				
			||||||
bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2
 | 
					 | 
				
			||||||
MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
 | 
					 | 
				
			||||||
ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
 | 
					 | 
				
			||||||
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
 | 
					 | 
				
			||||||
ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC
 | 
					 | 
				
			||||||
206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci
 | 
					 | 
				
			||||||
KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2
 | 
					 | 
				
			||||||
JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9
 | 
					 | 
				
			||||||
BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e
 | 
					 | 
				
			||||||
Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B
 | 
					 | 
				
			||||||
PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67
 | 
					 | 
				
			||||||
Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq
 | 
					 | 
				
			||||||
Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ
 | 
					 | 
				
			||||||
o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3
 | 
					 | 
				
			||||||
+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj
 | 
					 | 
				
			||||||
YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj
 | 
					 | 
				
			||||||
FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
 | 
					 | 
				
			||||||
AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn
 | 
					 | 
				
			||||||
xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2
 | 
					 | 
				
			||||||
LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc
 | 
					 | 
				
			||||||
obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8
 | 
					 | 
				
			||||||
CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe
 | 
					 | 
				
			||||||
IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA
 | 
					 | 
				
			||||||
DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F
 | 
					 | 
				
			||||||
AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX
 | 
					 | 
				
			||||||
Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb
 | 
					 | 
				
			||||||
AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl
 | 
					 | 
				
			||||||
Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw
 | 
					 | 
				
			||||||
RY8mkaKO/qk=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMx
 | 
					 | 
				
			||||||
HTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNh
 | 
					 | 
				
			||||||
IE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0
 | 
					 | 
				
			||||||
aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyOTA2MDAwMFoXDTM3MTEyMDE1
 | 
					 | 
				
			||||||
MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wgVGltZSBXYXJuZXIg
 | 
					 | 
				
			||||||
SW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMuQU9M
 | 
					 | 
				
			||||||
IFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw
 | 
					 | 
				
			||||||
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U
 | 
					 | 
				
			||||||
0pPlLYnKhHw/EEMbjIt8hFj4JHxIzyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItI
 | 
					 | 
				
			||||||
TuLCxFlpMGK2MKKMCxGZYTVtfu/FsRkGIBKOQuHfD5YQUqjPnF+VFNivO3ULMSAf
 | 
					 | 
				
			||||||
RC+iYkGzuxgh28pxPIzstrkNn+9R7017EvILDOGsQI93f7DKeHEMXRZxcKLXwjqF
 | 
					 | 
				
			||||||
zQ6axOAAsNUl6twr5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQIfHNlIAqh
 | 
					 | 
				
			||||||
BC4aMqiaILGcLCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEA
 | 
					 | 
				
			||||||
AaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jY
 | 
					 | 
				
			||||||
PXy+XxIwHwYDVR0jBBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/
 | 
					 | 
				
			||||||
BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQCKIBilvrMvtKaEAEAwKfq0FHNMeUWn
 | 
					 | 
				
			||||||
9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u0FIy2VkyvNp5ctZ7CegCgTXT
 | 
					 | 
				
			||||||
Ct8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77BfWgDrvq2g+EQF
 | 
					 | 
				
			||||||
Z7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oTLW4jYYehY0KswsuX
 | 
					 | 
				
			||||||
n2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCzvhGbRWeDhhmH05i9CBoW
 | 
					 | 
				
			||||||
H1iCC+GWaQVLjuyDUTEH1dSf/1l7qG6Fz9NLqUmwX7A5KGgOc90lmt4S
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMx
 | 
					 | 
				
			||||||
HTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNh
 | 
					 | 
				
			||||||
IE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0
 | 
					 | 
				
			||||||
aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyOTA2MDAwMFoXDTM3MDkyODIz
 | 
					 | 
				
			||||||
NDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wgVGltZSBXYXJuZXIg
 | 
					 | 
				
			||||||
SW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMuQU9M
 | 
					 | 
				
			||||||
IFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIw
 | 
					 | 
				
			||||||
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ
 | 
					 | 
				
			||||||
7ouZzU9AhqS2TcnZsdw8TQ2FTBVsRotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilb
 | 
					 | 
				
			||||||
m2BPJoPRYxJWSXakFsKlnUWsi4SVqBax7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOY
 | 
					 | 
				
			||||||
xFSMFkpBd4aVdQxHAWZg/BXxD+r1FHjHDtdugRxev17nOirYlxcwfACtCJ0zr7iZ
 | 
					 | 
				
			||||||
YYCLqJV+FNwSbKTQ2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2wTPDaRrbq
 | 
					 | 
				
			||||||
JS5Gr42whTg0ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fx
 | 
					 | 
				
			||||||
I2rSAG2X+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETz
 | 
					 | 
				
			||||||
kxmlJ85per5n0/xQpCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFh
 | 
					 | 
				
			||||||
EVsVS6kkUfykXPcXnbDS+gfpj1bkGoxoigTTfFrjnqKhynFbotSg5ymFXQNoKk/S
 | 
					 | 
				
			||||||
Btc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuWCpTehTacyH+BCQJJKg71ZDIM
 | 
					 | 
				
			||||||
gtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1ExMVCgyhwn2RAu
 | 
					 | 
				
			||||||
rda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
 | 
					 | 
				
			||||||
FE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaAFE9pbQN+nZ8HGEO8txBO
 | 
					 | 
				
			||||||
1b+pxCAoMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAO/Ouyugu
 | 
					 | 
				
			||||||
h4X7ZVnnrREUpVe8WJ8kEle7+z802u6teio0cnAxa8cZmIDJgt43d15Ui47y6mdP
 | 
					 | 
				
			||||||
yXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRFASbI5Rq8NEQh3q0l/HYWdyGQgJhXnU7q
 | 
					 | 
				
			||||||
7C+qPBR7V8F+GBRn7iTGvboVsNIYvbdVgaxTwOjdaRITQrcCtQVBynlQboIOcXKT
 | 
					 | 
				
			||||||
RuidDV29rs4prWPVVRaAMCf/drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ68W/
 | 
					 | 
				
			||||||
ClTluUI8JPu3B5wwn3la5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyB
 | 
					 | 
				
			||||||
M5kYJRF3p+v9WAksmWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQ
 | 
					 | 
				
			||||||
my8YJPamTQr5O8t1wswvziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xO
 | 
					 | 
				
			||||||
AU++CrYD062KRffaJ00psUjf5BHklka9bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT
 | 
					 | 
				
			||||||
9Y41xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4oGKQWDzH9OmwjkyB24f0H
 | 
					 | 
				
			||||||
hdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2uBOLZ8/5
 | 
					 | 
				
			||||||
fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIG0zCCBbugAwIBAgIBADANBgkqhkiG9w0BAQUFADCBzDELMAkGA1UEBhMCQVQx
 | 
					 | 
				
			||||||
EDAOBgNVBAgTB0F1c3RyaWExDzANBgNVBAcTBlZpZW5uYTE6MDgGA1UEChMxQVJH
 | 
					 | 
				
			||||||
RSBEQVRFTiAtIEF1c3RyaWFuIFNvY2lldHkgZm9yIERhdGEgUHJvdGVjdGlvbjEl
 | 
					 | 
				
			||||||
MCMGA1UECxMcQS1DRVJUIENlcnRpZmljYXRpb24gU2VydmljZTEYMBYGA1UEAxMP
 | 
					 | 
				
			||||||
QS1DRVJUIEFEVkFOQ0VEMR0wGwYJKoZIhvcNAQkBFg5pbmZvQGEtY2VydC5hdDAe
 | 
					 | 
				
			||||||
Fw0wNDEwMjMxNDE0MTRaFw0xMTEwMjMxNDE0MTRaMIHMMQswCQYDVQQGEwJBVDEQ
 | 
					 | 
				
			||||||
MA4GA1UECBMHQXVzdHJpYTEPMA0GA1UEBxMGVmllbm5hMTowOAYDVQQKEzFBUkdF
 | 
					 | 
				
			||||||
IERBVEVOIC0gQXVzdHJpYW4gU29jaWV0eSBmb3IgRGF0YSBQcm90ZWN0aW9uMSUw
 | 
					 | 
				
			||||||
IwYDVQQLExxBLUNFUlQgQ2VydGlmaWNhdGlvbiBTZXJ2aWNlMRgwFgYDVQQDEw9B
 | 
					 | 
				
			||||||
LUNFUlQgQURWQU5DRUQxHTAbBgkqhkiG9w0BCQEWDmluZm9AYS1jZXJ0LmF0MIIB
 | 
					 | 
				
			||||||
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3euXIy+mnf6BYKbK+QH5k679
 | 
					 | 
				
			||||||
tUFqeT8jlZxMew8eNiHuw9KoxWBzL6KksK+5uK7Gatw+sbAYntEGE80P+Jg1hADM
 | 
					 | 
				
			||||||
e+Fr5V0bc6QS3gkVtfUCW/RIvfMM39oxvmqJmOgPnJU7H6+nmLtsq61tv9kVJi/2
 | 
					 | 
				
			||||||
4Y5wXW3odet72sF57EoG6s78w0BUVLNcMngS9bZZzmdG3/d6JbkGgoNF/8DcgCBJ
 | 
					 | 
				
			||||||
W/t0JrcIzyppXIOVtUzzOrrU86zuUgT3Rtkl5kjG7DEHpFb9H0fTOY1v8+gRoaO6
 | 
					 | 
				
			||||||
2gA0PCiysgVZjwgVeYe3KAg11nznyleDv198uK3Dc1oXIGYjJx2FpKWUvAuAEwID
 | 
					 | 
				
			||||||
AQABo4ICvDCCArgwHQYDVR0OBBYEFDd/Pj6ZcWDKJNSRE3nQdCm0qCTYMIH5BgNV
 | 
					 | 
				
			||||||
HSMEgfEwge6AFDd/Pj6ZcWDKJNSRE3nQdCm0qCTYoYHSpIHPMIHMMQswCQYDVQQG
 | 
					 | 
				
			||||||
EwJBVDEQMA4GA1UECBMHQXVzdHJpYTEPMA0GA1UEBxMGVmllbm5hMTowOAYDVQQK
 | 
					 | 
				
			||||||
EzFBUkdFIERBVEVOIC0gQXVzdHJpYW4gU29jaWV0eSBmb3IgRGF0YSBQcm90ZWN0
 | 
					 | 
				
			||||||
aW9uMSUwIwYDVQQLExxBLUNFUlQgQ2VydGlmaWNhdGlvbiBTZXJ2aWNlMRgwFgYD
 | 
					 | 
				
			||||||
VQQDEw9BLUNFUlQgQURWQU5DRUQxHTAbBgkqhkiG9w0BCQEWDmluZm9AYS1jZXJ0
 | 
					 | 
				
			||||||
LmF0ggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMEcGA1UdJQRAMD4G
 | 
					 | 
				
			||||||
CCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcD
 | 
					 | 
				
			||||||
CAYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAP8wUQYDVR0gBEowSDBGBggq
 | 
					 | 
				
			||||||
KAAYAQEBAzA6MDgGCCsGAQUFBwIBFixodHRwOi8vd3d3LmEtY2VydC5hdC9jZXJ0
 | 
					 | 
				
			||||||
aWZpY2F0ZS1wb2xpY3kuaHRtbDA7BglghkgBhvhCAQgELhYsaHR0cDovL3d3dy5h
 | 
					 | 
				
			||||||
LWNlcnQuYXQvY2VydGlmaWNhdGUtcG9saWN5Lmh0bWwwGQYDVR0RBBIwEIEOaW5m
 | 
					 | 
				
			||||||
b0BhLWNlcnQuYXQwLwYDVR0SBCgwJoEOaW5mb0BhLWNlcnQuYXSGFGh0dHA6Ly93
 | 
					 | 
				
			||||||
d3cuYS1jZXJ0LmF0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHBzOi8vc2VjdXJlLmEt
 | 
					 | 
				
			||||||
Y2VydC5hdC9jZ2ktYmluL2EtY2VydC1hZHZhbmNlZC5jZ2kwDQYJKoZIhvcNAQEF
 | 
					 | 
				
			||||||
BQADggEBACX1IvgfdG2rvfv35O48vSEvcVaEdlN8USFBHWz3JRAozgzvaBtwHkjK
 | 
					 | 
				
			||||||
Zwt5l/BWOtjbvHfRjDt7ijlBEcxOOrNC1ffyMHwHrXpvff6YpQ5wnxmIYEQcURiG
 | 
					 | 
				
			||||||
HMqruEX0WkuDNgSKwefsgXs27eeBauHgNGVcTYH1rmHu/ZyLpLxOyJQ2PCzA1DzW
 | 
					 | 
				
			||||||
3rWkIX92ogJ7lTRdWrbxwUL1XGinxnnaQ74+/y0pI9JNEv7ic2tpkweRMpkedaLW
 | 
					 | 
				
			||||||
msC1+orfKTebsg69aMaCx7o6jNONRmR/7TVaPf8/k6g52cHZ9YWjQvup22b5rWxG
 | 
					 | 
				
			||||||
J5r5LZ4vCPmF4+T4lutjUYAa/lGuQTg=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIDwzCCAyygAwIBAgIBADANBgkqhkiG9w0BAQQFADCBmDELMAkGA1UEBhMCQVQx
 | 
					 | 
				
			||||||
EDAOBgNVBAgTB0F1c3RyaWExDzANBgNVBAcTBlZpZW5uYTFCMEAGA1UEChM5QXJn
 | 
					 | 
				
			||||||
ZSBEYXRlbiBPZXN0ZXJyZWljaGlzY2hlIEdlc2VsbHNjaGFmdCBmdWVyIERhdGVu
 | 
					 | 
				
			||||||
c2NodXR6MSIwIAYJKoZIhvcNAQkBFhNhLWNlcnRAYXJnZWRhdGVuLmF0MB4XDTAx
 | 
					 | 
				
			||||||
MDIxMjExMzAzMFoXDTA5MDIxMjExMzAzMFowgZgxCzAJBgNVBAYTAkFUMRAwDgYD
 | 
					 | 
				
			||||||
VQQIEwdBdXN0cmlhMQ8wDQYDVQQHEwZWaWVubmExQjBABgNVBAoTOUFyZ2UgRGF0
 | 
					 | 
				
			||||||
ZW4gT2VzdGVycmVpY2hpc2NoZSBHZXNlbGxzY2hhZnQgZnVlciBEYXRlbnNjaHV0
 | 
					 | 
				
			||||||
ejEiMCAGCSqGSIb3DQEJARYTYS1jZXJ0QGFyZ2VkYXRlbi5hdDCBnzANBgkqhkiG
 | 
					 | 
				
			||||||
9w0BAQEFAAOBjQAwgYkCgYEAwgsHqoNtmmrJ86+e1I4hOVBaL4kokqKN2IPOIL+1
 | 
					 | 
				
			||||||
XwY8vfOOUfPEdhWpaC0ldt7VYrksgDiUccgH0FROANWK2GkfKMDzjjXHysR04uEb
 | 
					 | 
				
			||||||
Om7Kqjqn0nproOGkFG+QvBZgs+Ws+HXNFJA6V76fU4+JXq4452LSK4Lr5YcBquu3
 | 
					 | 
				
			||||||
NJECAwEAAaOCARkwggEVMB0GA1UdDgQWBBQ0j59zH/G31zRjgK1y2P//tSAWZjCB
 | 
					 | 
				
			||||||
xQYDVR0jBIG9MIG6gBQ0j59zH/G31zRjgK1y2P//tSAWZqGBnqSBmzCBmDELMAkG
 | 
					 | 
				
			||||||
A1UEBhMCQVQxEDAOBgNVBAgTB0F1c3RyaWExDzANBgNVBAcTBlZpZW5uYTFCMEAG
 | 
					 | 
				
			||||||
A1UEChM5QXJnZSBEYXRlbiBPZXN0ZXJyZWljaGlzY2hlIEdlc2VsbHNjaGFmdCBm
 | 
					 | 
				
			||||||
dWVyIERhdGVuc2NodXR6MSIwIAYJKoZIhvcNAQkBFhNhLWNlcnRAYXJnZWRhdGVu
 | 
					 | 
				
			||||||
LmF0ggEAMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQE
 | 
					 | 
				
			||||||
AwICBDANBgkqhkiG9w0BAQQFAAOBgQBFuJYncqMYB6gXQS3eDOI90BEHfFTKy/dV
 | 
					 | 
				
			||||||
AV+K7QdAYikWmqgBheRdPKddJdccPy/Zl/p3ZT7GhDyC5f3wZjcuu8AJ27BNwbCA
 | 
					 | 
				
			||||||
x54dgxgCNcyPm79nY8MRtEdEpoRGdSsFKJemz6hpXM++MWFciyrRWIIA44XB0Gv3
 | 
					 | 
				
			||||||
US0spjsDPQ==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,16 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICajCCAdMCBDGA0QUwDQYJKoZIhvcNAQEEBQAwfTELMAkGA1UEBhMCQ2ExDzAN
 | 
					 | 
				
			||||||
BgNVBAcTBk5lcGVhbjEeMBwGA1UECxMVTm8gTGlhYmlsaXR5IEFjY2VwdGVkMR8w
 | 
					 | 
				
			||||||
HQYDVQQKExZGb3IgRGVtbyBQdXJwb3NlcyBPbmx5MRwwGgYDVQQDExNFbnRydXN0
 | 
					 | 
				
			||||||
IERlbW8gV2ViIENBMB4XDTk2MDQyNjEzMzUwMVoXDTA2MDQyNjEzMzUwMVowfTEL
 | 
					 | 
				
			||||||
MAkGA1UEBhMCQ2ExDzANBgNVBAcTBk5lcGVhbjEeMBwGA1UECxMVTm8gTGlhYmls
 | 
					 | 
				
			||||||
aXR5IEFjY2VwdGVkMR8wHQYDVQQKExZGb3IgRGVtbyBQdXJwb3NlcyBPbmx5MRww
 | 
					 | 
				
			||||||
GgYDVQQDExNFbnRydXN0IERlbW8gV2ViIENBMIGdMA0GCSqGSIb3DQEBAQUAA4GL
 | 
					 | 
				
			||||||
ADCBhwKBgQCaroS7O1DA0hm4IefNYU1cx/nqOmzEnk291d1XqznDeF4wEgakbkCc
 | 
					 | 
				
			||||||
zTKxK791yNpXG5RmngqH7cygDRTHZJ6mfCRn0wGC+AI00F2vYTGqPGRQL1N3lZT0
 | 
					 | 
				
			||||||
YDKFC0SQeMMjFIZ1aeQigroFQnHo0VB3zWIMpNkka8PY9lxHZAmWwQIBAzANBgkq
 | 
					 | 
				
			||||||
hkiG9w0BAQQFAAOBgQBAx0UMVA1s54lMQyXjMX5kj99FJN5itb8bK1Rk+cegPQPF
 | 
					 | 
				
			||||||
cWO9SEWyEjjBjIkjjzAwBkaEszFsNGxemxtXvwjIm1xEUMTVlPEWTs2qnDvAUA9W
 | 
					 | 
				
			||||||
YqhWbhH0toGT36236QAsqCZ76rbTRVSSX2BHyJwJMG2tCRv7kRJ//NIgxj3H4w==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,16 +0,0 @@
 | 
				
			|||||||
Tims test GCI CA
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIB8DCCAZoCAQAwDQYJKoZIhvcNAQEEBQAwgYIxCzAJBgNVBAYTAkFVMRMwEQYD
 | 
					 | 
				
			||||||
VQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5
 | 
					 | 
				
			||||||
cHRTb2Z0IFB0eSBMdGQxFDASBgNVBAsTC2RldmVsb3BtZW50MRkwFwYDVQQDExBD
 | 
					 | 
				
			||||||
cnlwdFNvZnQgRGV2IENBMB4XDTk3MDMyMjEzMzQwNFoXDTk4MDMyMjEzMzQwNFow
 | 
					 | 
				
			||||||
gYIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhC
 | 
					 | 
				
			||||||
cmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxFDASBgNVBAsTC2Rl
 | 
					 | 
				
			||||||
dmVsb3BtZW50MRkwFwYDVQQDExBDcnlwdFNvZnQgRGV2IENBMFwwDQYJKoZIhvcN
 | 
					 | 
				
			||||||
AQEBBQADSwAwSAJBAOAOAqogG5QwAmLhzyO4CoRnx/wVy4NZP4dxJy83O1EnL0rw
 | 
					 | 
				
			||||||
OdsamJKvPOLHgSXo3gDu9uVyvCf/QJmZAmC5ml8CAwEAATANBgkqhkiG9w0BAQQF
 | 
					 | 
				
			||||||
AANBADRRS/GVdd7rAqRW6SdmgLJduOU2yq3avBu99kRqbp9A/dLu6r6jU+eP4oOA
 | 
					 | 
				
			||||||
TfdbFZtAAD2Hx9jUtY3tfdrJOb8= 
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICVjCCAgACAQAwDQYJKoZIhvcNAQEEBQAwgbUxCzAJBgNVBAYTAkFVMRMwEQYD
 | 
					 | 
				
			||||||
VQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5
 | 
					 | 
				
			||||||
cHRTb2Z0IFB0eSBMdGQxLDAqBgNVBAsTI1dPUlRITEVTUyBDRVJUSUZJQ0FUSU9O
 | 
					 | 
				
			||||||
IEFVVEhPUklUSUVTMTQwMgYDVQQDEytaRVJPIFZBTFVFIENBIC0gREVNT05TVFJB
 | 
					 | 
				
			||||||
VElPTiBQVVJQT1NFUyBPTkxZMB4XDTk3MDQwMzEzMjI1NFoXDTk4MDQwMzEzMjI1
 | 
					 | 
				
			||||||
NFowgbUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH
 | 
					 | 
				
			||||||
EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxLDAqBgNVBAsT
 | 
					 | 
				
			||||||
I1dPUlRITEVTUyBDRVJUSUZJQ0FUSU9OIEFVVEhPUklUSUVTMTQwMgYDVQQDEyta
 | 
					 | 
				
			||||||
RVJPIFZBTFVFIENBIC0gREVNT05TVFJBVElPTiBQVVJQT1NFUyBPTkxZMFwwDQYJ
 | 
					 | 
				
			||||||
KoZIhvcNAQEBBQADSwAwSAJBAOZ7T7yqP/tyspcko3yPY1y0Cm2EmwNvzW4QgVXR
 | 
					 | 
				
			||||||
Fjs3HmJ4xtSpXdo6mwcGezL3Abt/aQXaxv9PU8xt+Jr0OFUCAwEAATANBgkqhkiG
 | 
					 | 
				
			||||||
9w0BAQQFAANBAOQpYmGgyCqCy1OljgJhCqQOu627oVlHzK1L+t9vBaMfn40AVUR4
 | 
					 | 
				
			||||||
WzQVWO31KTgi5vTK1U+3h46fgUWqQ0h+6rU=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
subject=/O=VeriSign, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD./OU=For VeriSign authorized testing only. No assurances (C)VS1997
 | 
					 | 
				
			||||||
notBefore=Mar  4 00:00:00 1997 GMT
 | 
					 | 
				
			||||||
notAfter=Mar  4 23:59:59 2025 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICTTCCAfcCEEdoCqpuXxnoK27q7d58Qc4wDQYJKoZIhvcNAQEEBQAwgakxFjAU
 | 
					 | 
				
			||||||
BgNVBAoTDVZlcmlTaWduLCBJbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v
 | 
					 | 
				
			||||||
cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnkgUmVmLiBMaWFiLiBMVEQuMUYw
 | 
					 | 
				
			||||||
RAYDVQQLEz1Gb3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5nIG9ubHkuIE5v
 | 
					 | 
				
			||||||
IGFzc3VyYW5jZXMgKEMpVlMxOTk3MB4XDTk3MDMwNDAwMDAwMFoXDTI1MDMwNDIz
 | 
					 | 
				
			||||||
NTk1OVowgakxFjAUBgNVBAoTDVZlcmlTaWduLCBJbmMxRzBFBgNVBAsTPnd3dy52
 | 
					 | 
				
			||||||
ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnkgUmVmLiBM
 | 
					 | 
				
			||||||
aWFiLiBMVEQuMUYwRAYDVQQLEz1Gb3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0
 | 
					 | 
				
			||||||
aW5nIG9ubHkuIE5vIGFzc3VyYW5jZXMgKEMpVlMxOTk3MFwwDQYJKoZIhvcNAQEB
 | 
					 | 
				
			||||||
BQADSwAwSAJBAMak6xImJx44jMKcbkACy5/CyMA2fqXK4PlzTtCxRq5tFkDzne7s
 | 
					 | 
				
			||||||
cI8oFK/J+gFZNE3bjidDxf07O3JOYG9RGx8CAwEAATANBgkqhkiG9w0BAQQFAANB
 | 
					 | 
				
			||||||
ADT523tENOKrEheZFpsJx1UUjPrG7TwYc/C4NBHrZI4gZJcKVFIfNulftVS6UMYW
 | 
					 | 
				
			||||||
ToLEMaUojc3DuNXHG21PDG8=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMCQ0Ex
 | 
					 | 
				
			||||||
CzAJBgNVBAgTAk9OMRAwDgYDVQQHEwdUb3JvbnRvMRgwFgYDVQQKEw9CYW5rRW5n
 | 
					 | 
				
			||||||
aW5lIEluYy4xKTAnBgNVBAsTIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IERpdmlz
 | 
					 | 
				
			||||||
aW9uMRMwEQYDVQQDEwpiYW5rZW5naW5lMSAwHgYJKoZIhvcNAQkBFhFjYUBiYW5r
 | 
					 | 
				
			||||||
ZW5naW5lLmNvbTAeFw05ODAxMDEwMDAwMDBaFw0zODAxMTcwMDAwMDBaMIGoMQsw
 | 
					 | 
				
			||||||
CQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9udG8xGDAWBgNV
 | 
					 | 
				
			||||||
BAoTD0JhbmtFbmdpbmUgSW5jLjEpMCcGA1UECxMgQ2VydGlmaWNhdGlvbiBBdXRo
 | 
					 | 
				
			||||||
b3JpdHkgRGl2aXNpb24xEzARBgNVBAMTCmJhbmtlbmdpbmUxIDAeBgkqhkiG9w0B
 | 
					 | 
				
			||||||
CQEWEWNhQGJhbmtlbmdpbmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
 | 
					 | 
				
			||||||
CgKCAQEA14LoTUAl1/hEy+Kh1kLHiBdW2zD3V4IhM7xxTVKsYsIH56nr69ATTIxU
 | 
					 | 
				
			||||||
P36eRzeZ137qt1AxHFjDCidk3m1Ul6l59ProPexdslLLM2npM3f2cteg+toyiYiS
 | 
					 | 
				
			||||||
EJKjyzIu1xF1j9qzGkymSY/4DsXLZNk9FaczxMk/Ooc6Os1M3AverL4VG4rYIb6f
 | 
					 | 
				
			||||||
eR32cIKJ9Q1fGuyKk7ipq1XQfPW8a8TgZdbHbe7U9Gk3iasGMHHvpR9Ep3mGbgdT
 | 
					 | 
				
			||||||
uQ98SBEuIwe1BUCGg/MXpVy48MNXfAMotBgGw4pl9yqSjMni2FB+E9Q9DHFs2RgX
 | 
					 | 
				
			||||||
MqzKuo8zcPxKx2kZ6Arj8+27dw2clQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G
 | 
					 | 
				
			||||||
CSqGSIb3DQEBBQUAA4IBAQBauupHX9EhpC/r57d6b5kkeWvognxIP9//TO4iw3qb
 | 
					 | 
				
			||||||
zIXEkPXmJmwVzlzoKJWqiya+aw19SP0+G6CzsFOBo/9ehmz+hZ8bhYX4MjlWzX5u
 | 
					 | 
				
			||||||
Tnkhz172j9fOBUmrTVPkcRIs6zjCD5PQAGoBPP1/Zdy2N36lZ0U7lg07Opirj/yJ
 | 
					 | 
				
			||||||
PSJeM2j0fwIFAroiVckvdT0BVwB6S/cPaAQGPghbbr1YGSmYrMriSv825ILJUfxz
 | 
					 | 
				
			||||||
rJYunGR9FiY9Ob7+jwJwiZMS4CxSPktutxr/3hOvr1+ALS7IcVakhhA3PuZAJbdH
 | 
					 | 
				
			||||||
FRclR9qMM8aBnBZmf+Uv3K3uhT+UBzzY654U9Yi1JYnA
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMCQ0Ex
 | 
					 | 
				
			||||||
CzAJBgNVBAgTAk9OMRAwDgYDVQQHEwdUb3JvbnRvMRgwFgYDVQQKEw9DZXJ0RW5n
 | 
					 | 
				
			||||||
aW5lIEluYy4xKTAnBgNVBAsTIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IERpdmlz
 | 
					 | 
				
			||||||
aW9uMRMwEQYDVQQDEwpjZXJ0ZW5naW5lMSAwHgYJKoZIhvcNAQkBFhFjYUBjZXJ0
 | 
					 | 
				
			||||||
ZW5naW5lLmNvbTAeFw05ODAxMDEwMDAwMDBaFw0zODAxMTcwMDAwMDBaMIGoMQsw
 | 
					 | 
				
			||||||
CQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9udG8xGDAWBgNV
 | 
					 | 
				
			||||||
BAoTD0NlcnRFbmdpbmUgSW5jLjEpMCcGA1UECxMgQ2VydGlmaWNhdGlvbiBBdXRo
 | 
					 | 
				
			||||||
b3JpdHkgRGl2aXNpb24xEzARBgNVBAMTCmNlcnRlbmdpbmUxIDAeBgkqhkiG9w0B
 | 
					 | 
				
			||||||
CQEWEWNhQGNlcnRlbmdpbmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
 | 
					 | 
				
			||||||
CgKCAQEA7aTXURShaeVt9u/dP3Q2dVib3jTCZvEyc6yfpGgaYWewXWuP4HOSfI4h
 | 
					 | 
				
			||||||
GZblbpl+dzJc6RjhR+pguIRtbT5FJB8SJGjRqoujBEOQOxtVtc2fjM9Dqh0iOvMW
 | 
					 | 
				
			||||||
WS6buxHG55GVrHAQaO5HXEScKQBa9ZyNmpSXPTEBrDMej1OAGOkc524/TZrgFPF4
 | 
					 | 
				
			||||||
AiJLLkxCcP8NuzUKlW3WzNMSSoCtjkUKy4wjSLlAWCFM0T9Df6/+Z8ZUQTzHoKCD
 | 
					 | 
				
			||||||
ncH5Qnynd7DlOwKQ2JwwxRhYGiGVTUN0GUq7qA11kW3+vnbFesKQXoF6o2PVx9s2
 | 
					 | 
				
			||||||
YXviI2NXXUjZ0pVnsnFCc45Pm8XojwIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G
 | 
					 | 
				
			||||||
CSqGSIb3DQEBBQUAA4IBAQBP/aHOKJ00Akzc9HWM1X30hlWZFBaQi4pqD4Uhk8+p
 | 
					 | 
				
			||||||
KzzwFP5DRLBOz8TYBbtdXrS6hxVMr2sqWmhVkuyepWhHZazKGyHY/y0FbOXsewAV
 | 
					 | 
				
			||||||
1QxxSyx7ve89pCKv4/w0rQcP916iHc8Y/TCpmz7eITa3GId+8H/XTaBi8GBp9X9O
 | 
					 | 
				
			||||||
w8m25FmEB1NT+eJwefvfdKowjy4tSorKdW/eJspxNuTSRGmUy8G71W5dYvgpAlx6
 | 
					 | 
				
			||||||
mdnHyzxEGvRYNNI2bS0ifXgbEFNWqSas9q34ea5KOpkJu8T/KyXfSb6rPOsBSb0t
 | 
					 | 
				
			||||||
wMowwGtCVH2C4Lw/8zo0EjhMpTOsPaub408PrZ+NQ2bl
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIF3TCCA8WgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMCQ0Ex
 | 
					 | 
				
			||||||
CzAJBgNVBAgTAk9OMRAwDgYDVQQHEwdUb3JvbnRvMRgwFgYDVQQKEw9Gb3J0RW5n
 | 
					 | 
				
			||||||
aW5lIEluYy4xKTAnBgNVBAsTIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IERpdmlz
 | 
					 | 
				
			||||||
aW9uMRMwEQYDVQQDEwpmb3J0ZW5naW5lMSAwHgYJKoZIhvcNAQkBFhFjYUBmb3J0
 | 
					 | 
				
			||||||
ZW5naW5lLmNvbTAeFw05ODAxMDEwMDAwMDBaFw0zODAxMTcwMDAwMDBaMIGoMQsw
 | 
					 | 
				
			||||||
CQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9udG8xGDAWBgNV
 | 
					 | 
				
			||||||
BAoTD0ZvcnRFbmdpbmUgSW5jLjEpMCcGA1UECxMgQ2VydGlmaWNhdGlvbiBBdXRo
 | 
					 | 
				
			||||||
b3JpdHkgRGl2aXNpb24xEzARBgNVBAMTCmZvcnRlbmdpbmUxIDAeBgkqhkiG9w0B
 | 
					 | 
				
			||||||
CQEWEWNhQGZvcnRlbmdpbmUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
 | 
					 | 
				
			||||||
CgKCAgEAyr7GbpwDxx1v3EYbo0gcO+ligEhlDqG2e7u/AbWGoVAqc8+q6auUJUtz
 | 
					 | 
				
			||||||
4i7oh0yNadu1o9kpXW+znkgO0zlrgjGskqqMO1ooppzTJdFy/P8gR6x1Iuv3kWtX
 | 
					 | 
				
			||||||
OuzwPPEjv09LWlhyJsN+oU4ztTVf07I0Q9zYupcoDQ58XKRheI9KdDB2DYSmxywA
 | 
					 | 
				
			||||||
WSLQwIeG0Qa7gvokeQlpkgkEC7viEecJ3752KXBJHnh7As51mxnlpmG6sDy67Eli
 | 
					 | 
				
			||||||
HDw5tHETRqbtnscGBjskGQBqR5xt7+QnnthZrN8HJHDoa9zgGephwizhkL44lXLF
 | 
					 | 
				
			||||||
YK9W5XhFbblw2c+mAcHkokRiwD7CPeIoyD2a/Jcw3n5hegKTlNhd4BFGVF6JR7gF
 | 
					 | 
				
			||||||
OFk2QfHXit5uthsij9Xhl7WAgQUqLgggD9MphqPf4nY66OZUJV9ZsmB+Qfp8UizB
 | 
					 | 
				
			||||||
0WAOegactKVyRqHtRa+KIEXQXNtZgjcmMk9CYkP0nIbKtgKXaH6+9VMHNOryCnFE
 | 
					 | 
				
			||||||
7pSsuPUkypncFWCHGSeiFO3w4w4J4csltxBADQzxfRu5KZnlToQN7bVpI/Q31tVX
 | 
					 | 
				
			||||||
E5bjrJcq6Oj/OTqZ3ID+OqbkUdAg0ggjRKcTgxnLHd/AbMzJ6PsclDDf7cLs0WSl
 | 
					 | 
				
			||||||
xMxQR/z5bNST1rNtT9rsiv2TOhfvCBxO9AOjBioO8PLO032HTNECAwEAAaMQMA4w
 | 
					 | 
				
			||||||
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAgEAVyBpPWfT2VOyvVpslGKx
 | 
					 | 
				
			||||||
8h0+CWP8cilygGRtZJ5dAJzc//1REAHdvK+TgZ4Foz3dqHhXI+RNN0FpzuWaYMjW
 | 
					 | 
				
			||||||
ZTS0kAmcOQuGY1Oo4PGlPHI21pNz29oFDTJr0ZmLBJ4JKVsE2soJg55jdk9MZHA7
 | 
					 | 
				
			||||||
K//7HH9RsmrWZOE5DZDlrxp6+naixhMwnlPKKisIy9GNZUPqGdUWABMdB/BUVVNl
 | 
					 | 
				
			||||||
NU5TtWpIXUClMd8a+eoKcItBeYXowkHOBpinPkDX3clFDIUfWiw0Ro08s8SrrFqR
 | 
					 | 
				
			||||||
8Szwbrj52Xv1RM56oGqCjnkvJctxihODV7NcpxoAFjIZokDom0q6zPrrTUsLFQov
 | 
					 | 
				
			||||||
Plovc3w5hmALiDMshaTvE1nm3Psn4yQ+FlRE8epTZrQiIGypZkZC6lcz0mYawueW
 | 
					 | 
				
			||||||
cThYWGFhVG4ktQzOjjNRsNxopW+W7cF1zQTxiWUDnxIKSj7gtdQ2jiubxEEhfVag
 | 
					 | 
				
			||||||
r8DMtAccNVTZVURpGi56TptOOuotrTqqC+2GviW4hlxvdvmuQN0OlXlUwzz2Trxc
 | 
					 | 
				
			||||||
FamNnuA54lZw/8arLtxsFmHrcnPw53+1spumLD0S5UkxHNu40h6LIVpZz3H+0rLz
 | 
					 | 
				
			||||||
uFofTfiyMjcfK2AyHQTgUCbsrvgNuLDQUbyFGVchdFUkhztX3DhEVnxnnrpY4BVj
 | 
					 | 
				
			||||||
QdTqWIvw7lGlSuDCjxEQAOc=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMCQ0Ex
 | 
					 | 
				
			||||||
CzAJBgNVBAgTAk9OMRAwDgYDVQQHEwdUb3JvbnRvMRgwFgYDVQQKEw9NYWlsRW5n
 | 
					 | 
				
			||||||
aW5lIEluYy4xKTAnBgNVBAsTIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IERpdmlz
 | 
					 | 
				
			||||||
aW9uMRMwEQYDVQQDEwptYWlsZW5naW5lMSAwHgYJKoZIhvcNAQkBFhFjYUBtYWls
 | 
					 | 
				
			||||||
ZW5naW5lLmNvbTAeFw05ODAxMDEwMDAwMDBaFw0zODAxMTcwMDAwMDBaMIGoMQsw
 | 
					 | 
				
			||||||
CQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9udG8xGDAWBgNV
 | 
					 | 
				
			||||||
BAoTD01haWxFbmdpbmUgSW5jLjEpMCcGA1UECxMgQ2VydGlmaWNhdGlvbiBBdXRo
 | 
					 | 
				
			||||||
b3JpdHkgRGl2aXNpb24xEzARBgNVBAMTCm1haWxlbmdpbmUxIDAeBgkqhkiG9w0B
 | 
					 | 
				
			||||||
CQEWEWNhQG1haWxlbmdpbmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
 | 
					 | 
				
			||||||
CgKCAQEAqXmfsU+lx+NFmn6tN17RTOyaddHqLnr/3rzEDIyT9TN+tF9TG7jmK7lJ
 | 
					 | 
				
			||||||
Jrj5arQ3nTFaLF8JuND2U1z/cLPw6/TX+1tE3v3CNUDSjaisyUDiUyp3TE8hMMMz
 | 
					 | 
				
			||||||
zfZQn0JsGgNhhWxqyzjhRQGtKL4+xtn8VsF/8zGgZYke7nlmVKz/FslDFTnNoodL
 | 
					 | 
				
			||||||
BAEGiu9JQS9qqpbSs20NdZ6LXPL2A4iTjnsNFBW3jIMVIn/JVVyaycU7ue2oFviD
 | 
					 | 
				
			||||||
vLNpkVZcR7A+jjIdIumOc5VSF0y7y74cQC5YwkR2mLK7UBYDK6NCY3ta/C4M8NsM
 | 
					 | 
				
			||||||
0FpmvRl0+A1ivZtVwqI98dxDtp7HeQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G
 | 
					 | 
				
			||||||
CSqGSIb3DQEBBQUAA4IBAQAjfNn5BCzxylBDakFQGWKE/P43PRibMOEzfd7+DzbY
 | 
					 | 
				
			||||||
WIekoz3i00DwoH3b6j4gwlDJRAOq4dF6/Pt/uBOHDo/op+ef+9ErmKPd+ehXN9h3
 | 
					 | 
				
			||||||
7QbccTgz7DtVwA4iRlDRLru+JuXzT+OsCHuFZMOLJ+KD2JAGh3W68JjdcLkrlcpt
 | 
					 | 
				
			||||||
AU0wc5aOHPPfEBdIah8y8QtNzXRVzoBt8zzvgCARkXxTS2u/9QaXR1hML0JtDgQS
 | 
					 | 
				
			||||||
SdZ6Kd8SN6yzqxD+buYD5sOfJmjBF/n3lqFHNMHnnGXy2TAXZtIAWzffU3A0cGPB
 | 
					 | 
				
			||||||
N6FZ026a86HbF1X4k+xszhbJu/ikczyuWnCJIg3fTYSD
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID6TCCAtGgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UEBhMCQ0Ex
 | 
					 | 
				
			||||||
CzAJBgNVBAgTAk9OMRAwDgYDVQQHEwdUb3JvbnRvMRowGAYDVQQKExFUcmFkZXJF
 | 
					 | 
				
			||||||
bmdpbmUgSW5jLjEpMCcGA1UECxMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRGl2
 | 
					 | 
				
			||||||
aXNpb24xFTATBgNVBAMTDHRyYWRlcmVuZ2luZTEiMCAGCSqGSIb3DQEJARYTY2FA
 | 
					 | 
				
			||||||
dHJhZGVyZW5naW5lLmNvbTAeFw05ODAxMDEwMDAwMDBaFw0zODAxMTcwMDAwMDBa
 | 
					 | 
				
			||||||
MIGuMQswCQYDVQQGEwJDQTELMAkGA1UECBMCT04xEDAOBgNVBAcTB1Rvcm9udG8x
 | 
					 | 
				
			||||||
GjAYBgNVBAoTEVRyYWRlckVuZ2luZSBJbmMuMSkwJwYDVQQLEyBDZXJ0aWZpY2F0
 | 
					 | 
				
			||||||
aW9uIEF1dGhvcml0eSBEaXZpc2lvbjEVMBMGA1UEAxMMdHJhZGVyZW5naW5lMSIw
 | 
					 | 
				
			||||||
IAYJKoZIhvcNAQkBFhNjYUB0cmFkZXJlbmdpbmUuY29tMIIBIjANBgkqhkiG9w0B
 | 
					 | 
				
			||||||
AQEFAAOCAQ8AMIIBCgKCAQEAzyX5QE+5SN+zgNn1v3zp9HmP4hQOWW8WuEVItZVP
 | 
					 | 
				
			||||||
9bt/xj5NeJd1kyPL/SqnF2qHcL3o/74r0Ga55aKHniwKYgQTlp5ELGfQ568QQeN9
 | 
					 | 
				
			||||||
xNIHtUXeStI9zCNZyZC+4YqObdMR/ivKA/WsLfUVMl2lV5JzJJz1BOE0gKEYiEyz
 | 
					 | 
				
			||||||
gIq5oLzkP/mOXoHRvWSZD2D0eHYIO7ovV2epVFK7g7p+dC4QoeIUEli+GF/Myg88
 | 
					 | 
				
			||||||
dV/qmi+Sybck2RLPXa8Nh27/ETVQ7kE1Eafmx7EyCqIhG+5lwJAy3HwHUBwAYuzj
 | 
					 | 
				
			||||||
iuZz5lD8aQmr8SKuvy3eOH9SVN5wh3YBlrNGwTStkESVLwIDAQABoxAwDjAMBgNV
 | 
					 | 
				
			||||||
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAWOPAUhZd3x9EQiFJcuxFTMd9q
 | 
					 | 
				
			||||||
axgcriCzJsM6D96sYGko9xTeLhX/lr1bliVYI5AlupoLXAdMzGHJkOgaTirKjQXr
 | 
					 | 
				
			||||||
F9nymDdUWKe3TmwGob5016nQlH7qRKvGO3hka0rOGRK2U/2JT/4Qp8iH/DFi6cyM
 | 
					 | 
				
			||||||
uP0q8n64SAkxZXLzUuFQXqf7U/SNjzb9XJQEIAdjp7eYd3Qb4jDsDcX0FrKMF1aV
 | 
					 | 
				
			||||||
r0dCDnS7am7WTXPYCDGdSkPgEHEtLYIYH3lZp5sKdVZ9wl4F0WNFkRWRUr7AXPjw
 | 
					 | 
				
			||||||
50uLmUNmKCd8JZLMGA1TRNSTi7U9EcrWt0OkMWm74T2WVnAgNsDv2WrWsGfj
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,59 +0,0 @@
 | 
				
			|||||||
Certificate:
 | 
					 | 
				
			||||||
    Data:
 | 
					 | 
				
			||||||
        Version: 3 (0x2)
 | 
					 | 
				
			||||||
        Serial Number: 1 (0x1)
 | 
					 | 
				
			||||||
        Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        Issuer: O=European ICE-TEL project, OU=V3-Certification Authority
 | 
					 | 
				
			||||||
        Validity
 | 
					 | 
				
			||||||
            Not Before: Apr  2 17:35:53 1997 GMT
 | 
					 | 
				
			||||||
            Not After : Apr  2 17:35:53 1998 GMT
 | 
					 | 
				
			||||||
        Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt
 | 
					 | 
				
			||||||
        Subject Public Key Info:
 | 
					 | 
				
			||||||
            Public Key Algorithm: rsa
 | 
					 | 
				
			||||||
            RSA Public Key: (512 bit)
 | 
					 | 
				
			||||||
                Modulus (512 bit):
 | 
					 | 
				
			||||||
                    00:82:75:ba:f6:d1:60:b5:f9:15:b3:6a:dd:29:8f:
 | 
					 | 
				
			||||||
                    8b:a4:6f:1a:88:e0:50:43:40:0b:79:41:d5:d3:16:
 | 
					 | 
				
			||||||
                    44:7d:74:65:17:42:06:52:0b:e9:50:c8:10:cd:24:
 | 
					 | 
				
			||||||
                    e2:ae:8d:22:30:73:e6:b4:b7:93:1f:e5:6e:a2:ae:
 | 
					 | 
				
			||||||
                    49:11:a5:c9:45
 | 
					 | 
				
			||||||
                Exponent: 65537 (0x10001)
 | 
					 | 
				
			||||||
        X509v3 extensions:
 | 
					 | 
				
			||||||
            X509v3 Authority Key Identifier: 
 | 
					 | 
				
			||||||
                0.........z.."p......e..
 | 
					 | 
				
			||||||
            X509v3 Subject Key Identifier: 
 | 
					 | 
				
			||||||
                ..~r..:..B.44fu......3
 | 
					 | 
				
			||||||
            X509v3 Key Usage: critical
 | 
					 | 
				
			||||||
                ....
 | 
					 | 
				
			||||||
            X509v3 Certificate Policies: critical
 | 
					 | 
				
			||||||
                0.0...*...
 | 
					 | 
				
			||||||
            X509v3 Subject Alternative Name: 
 | 
					 | 
				
			||||||
                0!..secude-support@darmstadt.gmd.de
 | 
					 | 
				
			||||||
            X509v3 Issuer Alternative Name: 
 | 
					 | 
				
			||||||
                0I..ice-tel-ca@darmstadt.gmd.de.*http://www.darmstadt.gmd.de/ice-tel/euroca
 | 
					 | 
				
			||||||
            X509v3 Basic Constraints: critical
 | 
					 | 
				
			||||||
                0....
 | 
					 | 
				
			||||||
            X509v3 CRL Distribution Points: 
 | 
					 | 
				
			||||||
                0200...,.*http://www.darmstadt.gmd.de/ice-tel/euroca
 | 
					 | 
				
			||||||
    Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        17:a2:88:b7:99:5a:05:41:e4:13:34:67:e6:1f:3e:26:ec:4b:
 | 
					 | 
				
			||||||
        69:f9:3e:28:22:be:9d:1c:ab:41:6f:0c:00:85:fe:45:74:f6:
 | 
					 | 
				
			||||||
        98:f0:ce:9b:65:53:4a:50:42:c7:d4:92:bd:d7:a2:a8:3d:98:
 | 
					 | 
				
			||||||
        88:73:cd:60:28:79:a3:fc:48:7a
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICzDCCAnagAwIBAgIBATANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv
 | 
					 | 
				
			||||||
cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
 | 
					 | 
				
			||||||
QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzU1M1oXDTk4MDQwMjE3MzU1M1owXDEhMB8G
 | 
					 | 
				
			||||||
A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0
 | 
					 | 
				
			||||||
aWZpY2F0aW9uIEF1dGhvcml0eTESMBAGA1UEBxMJRGFybXN0YWR0MFkwCgYEVQgB
 | 
					 | 
				
			||||||
AQICAgADSwAwSAJBAIJ1uvbRYLX5FbNq3SmPi6RvGojgUENAC3lB1dMWRH10ZRdC
 | 
					 | 
				
			||||||
BlIL6VDIEM0k4q6NIjBz5rS3kx/lbqKuSRGlyUUCAwEAAaOCATgwggE0MB8GA1Ud
 | 
					 | 
				
			||||||
IwQYMBaAFIr3yNUOx3ro1yJw4AuJ1bbsZbzPMB0GA1UdDgQWBBR+cvL4OoacQog0
 | 
					 | 
				
			||||||
NGZ1w9T80aIRMzAOBgNVHQ8BAf8EBAMCAfYwFAYDVR0gAQH/BAowCDAGBgQqAwQF
 | 
					 | 
				
			||||||
MCoGA1UdEQQjMCGBH3NlY3VkZS1zdXBwb3J0QGRhcm1zdGFkdC5nbWQuZGUwUgYD
 | 
					 | 
				
			||||||
VR0SBEswSYEbaWNlLXRlbC1jYUBkYXJtc3RhZHQuZ21kLmRlhipodHRwOi8vd3d3
 | 
					 | 
				
			||||||
LmRhcm1zdGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2EwDwYDVR0TAQH/BAUwAwEB
 | 
					 | 
				
			||||||
/zA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vd3d3LmRhcm1zdGFkdC5nbWQuZGUv
 | 
					 | 
				
			||||||
aWNlLXRlbC9ldXJvY2EwDQYJKoZIhvcNAQEEBQADQQAXooi3mVoFQeQTNGfmHz4m
 | 
					 | 
				
			||||||
7Etp+T4oIr6dHKtBbwwAhf5FdPaY8M6bZVNKUELH1JK916KoPZiIc81gKHmj/Eh6
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,48 +0,0 @@
 | 
				
			|||||||
Certificate:
 | 
					 | 
				
			||||||
    Data:
 | 
					 | 
				
			||||||
        Version: 3 (0x2)
 | 
					 | 
				
			||||||
        Serial Number: 0 (0x0)
 | 
					 | 
				
			||||||
        Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        Issuer: O=European ICE-TEL project, OU=V3-Certification Authority
 | 
					 | 
				
			||||||
        Validity
 | 
					 | 
				
			||||||
            Not Before: Apr  2 17:33:36 1997 GMT
 | 
					 | 
				
			||||||
            Not After : Apr  2 17:33:36 1998 GMT
 | 
					 | 
				
			||||||
        Subject: O=European ICE-TEL project, OU=V3-Certification Authority
 | 
					 | 
				
			||||||
        Subject Public Key Info:
 | 
					 | 
				
			||||||
            Public Key Algorithm: rsa
 | 
					 | 
				
			||||||
            RSA Public Key: (512 bit)
 | 
					 | 
				
			||||||
                Modulus (512 bit):
 | 
					 | 
				
			||||||
                    00:80:3e:eb:ae:47:a9:fe:10:54:0b:81:8b:9c:2b:
 | 
					 | 
				
			||||||
                    82:ab:3a:61:36:65:8b:f3:73:9f:ac:ac:7a:15:a7:
 | 
					 | 
				
			||||||
                    13:8f:b4:c4:ba:a3:0f:bc:a5:58:8d:cc:b1:93:31:
 | 
					 | 
				
			||||||
                    9e:81:9e:8c:19:61:86:fa:52:73:54:d1:97:76:22:
 | 
					 | 
				
			||||||
                    e7:c7:9f:41:cd
 | 
					 | 
				
			||||||
                Exponent: 65537 (0x10001)
 | 
					 | 
				
			||||||
        X509v3 extensions:
 | 
					 | 
				
			||||||
            X509v3 Subject Key Identifier: 
 | 
					 | 
				
			||||||
                ........z.."p......e..
 | 
					 | 
				
			||||||
            X509v3 Key Usage: critical
 | 
					 | 
				
			||||||
                ....
 | 
					 | 
				
			||||||
            X509v3 Subject Alternative Name: 
 | 
					 | 
				
			||||||
                0I.*http://www.darmstadt.gmd.de/ice-tel/euroca..ice-tel-ca@darmstadt.gmd.de
 | 
					 | 
				
			||||||
            X509v3 Basic Constraints: critical
 | 
					 | 
				
			||||||
                0....
 | 
					 | 
				
			||||||
    Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        76:69:61:db:b7:cf:8b:06:9e:d8:8c:96:53:d2:4d:a8:23:a6:
 | 
					 | 
				
			||||||
        03:44:e8:8f:24:a5:c0:84:a8:4b:77:d4:2d:2b:7d:37:91:67:
 | 
					 | 
				
			||||||
        f2:2c:ce:02:31:4c:6b:cc:ce:f2:68:a6:11:11:ab:7d:88:b8:
 | 
					 | 
				
			||||||
        7e:22:9f:25:06:60:bd:79:30:3d
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICFjCCAcCgAwIBAgIBADANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv
 | 
					 | 
				
			||||||
cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
 | 
					 | 
				
			||||||
QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzMzNloXDTk4MDQwMjE3MzMzNlowSDEhMB8G
 | 
					 | 
				
			||||||
A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0
 | 
					 | 
				
			||||||
aWZpY2F0aW9uIEF1dGhvcml0eTBZMAoGBFUIAQECAgIAA0sAMEgCQQCAPuuuR6n+
 | 
					 | 
				
			||||||
EFQLgYucK4KrOmE2ZYvzc5+srHoVpxOPtMS6ow+8pViNzLGTMZ6BnowZYYb6UnNU
 | 
					 | 
				
			||||||
0Zd2IufHn0HNAgMBAAGjgZcwgZQwHQYDVR0OBBYEFIr3yNUOx3ro1yJw4AuJ1bbs
 | 
					 | 
				
			||||||
ZbzPMA4GA1UdDwEB/wQEAwIB9jBSBgNVHREESzBJhipodHRwOi8vd3d3LmRhcm1z
 | 
					 | 
				
			||||||
dGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2GBG2ljZS10ZWwtY2FAZGFybXN0YWR0
 | 
					 | 
				
			||||||
LmdtZC5kZTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA0EAdmlh27fP
 | 
					 | 
				
			||||||
iwae2IyWU9JNqCOmA0TojySlwISoS3fULSt9N5Fn8izOAjFMa8zO8mimERGrfYi4
 | 
					 | 
				
			||||||
fiKfJQZgvXkwPQ==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,63 +0,0 @@
 | 
				
			|||||||
Certificate:
 | 
					 | 
				
			||||||
    Data:
 | 
					 | 
				
			||||||
        Version: 3 (0x2)
 | 
					 | 
				
			||||||
        Serial Number: 1 (0x1)
 | 
					 | 
				
			||||||
        Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        Issuer: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt
 | 
					 | 
				
			||||||
        Validity
 | 
					 | 
				
			||||||
            Not Before: Apr  2 17:35:59 1997 GMT
 | 
					 | 
				
			||||||
            Not After : Apr  2 17:35:59 1998 GMT
 | 
					 | 
				
			||||||
        Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt, CN=USER
 | 
					 | 
				
			||||||
        Subject Public Key Info:
 | 
					 | 
				
			||||||
            Public Key Algorithm: rsa
 | 
					 | 
				
			||||||
            RSA Public Key: (512 bit)
 | 
					 | 
				
			||||||
                Modulus (512 bit):
 | 
					 | 
				
			||||||
                    00:a8:a8:53:63:49:1b:93:c3:c3:0b:6c:88:11:55:
 | 
					 | 
				
			||||||
                    de:7e:6a:e2:f9:52:a0:dc:69:25:c4:c8:bf:55:e1:
 | 
					 | 
				
			||||||
                    31:a8:ce:e4:a9:29:85:99:8a:15:9a:de:f6:2f:e1:
 | 
					 | 
				
			||||||
                    b4:50:5f:5e:04:75:a6:f4:76:dc:3c:0e:39:dc:3a:
 | 
					 | 
				
			||||||
                    be:3e:a4:61:8b
 | 
					 | 
				
			||||||
                Exponent: 65537 (0x10001)
 | 
					 | 
				
			||||||
        X509v3 extensions:
 | 
					 | 
				
			||||||
            X509v3 Authority Key Identifier: 
 | 
					 | 
				
			||||||
                0...~r..:..B.44fu......3
 | 
					 | 
				
			||||||
            X509v3 Subject Key Identifier: 
 | 
					 | 
				
			||||||
                ...... .*...1.*.......
 | 
					 | 
				
			||||||
            X509v3 Key Usage: critical
 | 
					 | 
				
			||||||
                ....
 | 
					 | 
				
			||||||
            X509v3 Certificate Policies: critical
 | 
					 | 
				
			||||||
                0.0...*...0.......
 | 
					 | 
				
			||||||
            X509v3 Subject Alternative Name: 
 | 
					 | 
				
			||||||
                0:..user@darmstadt.gmd.de.!http://www.darmstadt.gmd.de/~user
 | 
					 | 
				
			||||||
            X509v3 Issuer Alternative Name: 
 | 
					 | 
				
			||||||
                0....gmdca@gmd.de..http://www.gmd.de..saturn.darmstadt.gmd.de.\1!0...U.
 | 
					 | 
				
			||||||
..European ICE-TEL project1#0!..U....V3-Certification Authority1.0...U....Darmstadt..141.12.62.26
 | 
					 | 
				
			||||||
            X509v3 Basic Constraints: critical
 | 
					 | 
				
			||||||
                0.
 | 
					 | 
				
			||||||
            X509v3 CRL Distribution Points: 
 | 
					 | 
				
			||||||
                0.0.......gmdca@gmd.de
 | 
					 | 
				
			||||||
    Signature Algorithm: md5WithRSAEncryption
 | 
					 | 
				
			||||||
        69:0c:e1:b7:a7:f2:d8:fb:e8:69:c0:13:cd:37:ad:21:06:22:
 | 
					 | 
				
			||||||
        4d:e8:c6:db:f1:04:0b:b7:e0:b3:d6:0c:81:03:ce:c3:6a:3e:
 | 
					 | 
				
			||||||
        c7:e7:24:24:a4:92:64:c2:83:83:06:42:53:0e:6f:09:1e:84:
 | 
					 | 
				
			||||||
        9a:f7:6f:63:9b:94:99:83:d6:a4
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIDTzCCAvmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBcMSEwHwYDVQQKExhFdXJv
 | 
					 | 
				
			||||||
cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
 | 
					 | 
				
			||||||
QXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHQwHhcNOTcwNDAyMTczNTU5WhcN
 | 
					 | 
				
			||||||
OTgwNDAyMTczNTU5WjBrMSEwHwYDVQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2pl
 | 
					 | 
				
			||||||
Y3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQH
 | 
					 | 
				
			||||||
EwlEYXJtc3RhZHQxDTALBgNVBAMTBFVTRVIwWTAKBgRVCAEBAgICAANLADBIAkEA
 | 
					 | 
				
			||||||
qKhTY0kbk8PDC2yIEVXefmri+VKg3GklxMi/VeExqM7kqSmFmYoVmt72L+G0UF9e
 | 
					 | 
				
			||||||
BHWm9HbcPA453Dq+PqRhiwIDAQABo4IBmDCCAZQwHwYDVR0jBBgwFoAUfnLy+DqG
 | 
					 | 
				
			||||||
nEKINDRmdcPU/NGiETMwHQYDVR0OBBYEFJfc4B8gjSoRmLUx4Sq/ucIYiMrPMA4G
 | 
					 | 
				
			||||||
A1UdDwEB/wQEAwIB8DAcBgNVHSABAf8EEjAQMAYGBCoDBAUwBgYECQgHBjBDBgNV
 | 
					 | 
				
			||||||
HREEPDA6gRV1c2VyQGRhcm1zdGFkdC5nbWQuZGWGIWh0dHA6Ly93d3cuZGFybXN0
 | 
					 | 
				
			||||||
YWR0LmdtZC5kZS9+dXNlcjCBsQYDVR0SBIGpMIGmgQxnbWRjYUBnbWQuZGWGEWh0
 | 
					 | 
				
			||||||
dHA6Ly93d3cuZ21kLmRlghdzYXR1cm4uZGFybXN0YWR0LmdtZC5kZaRcMSEwHwYD
 | 
					 | 
				
			||||||
VQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRp
 | 
					 | 
				
			||||||
ZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHSHDDE0MS4xMi42
 | 
					 | 
				
			||||||
Mi4yNjAMBgNVHRMBAf8EAjAAMB0GA1UdHwQWMBQwEqAQoA6BDGdtZGNhQGdtZC5k
 | 
					 | 
				
			||||||
ZTANBgkqhkiG9w0BAQQFAANBAGkM4ben8tj76GnAE803rSEGIk3oxtvxBAu34LPW
 | 
					 | 
				
			||||||
DIEDzsNqPsfnJCSkkmTCg4MGQlMObwkehJr3b2OblJmD1qQ=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
issuer= CN=4R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
notBefore=Jan 21 16:04:53 1999 GMT
 | 
					 | 
				
			||||||
notAfter=Jan 21 16:04:53 2004 GMT
 | 
					 | 
				
			||||||
subject= CN=4R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICZzCCAdOgAwIBAgIEOwVn1DAKBgYrJAMDAQIFADBvMQswCQYDVQQGEwJERTE9
 | 
					 | 
				
			||||||
MDsGA1UEChQ0UmVndWxpZXJ1bmdzYmVoyG9yZGUgZsh1ciBUZWxla29tbXVuaWth
 | 
					 | 
				
			||||||
dGlvbiB1bmQgUG9zdDEhMAwGBwKCBgEKBxQTATEwEQYDVQQDFAo0Ui1DQSAxOlBO
 | 
					 | 
				
			||||||
MCIYDzE5OTkwMTIxMTYwNDUzWhgPMjAwNDAxMjExNjA0NTNaMG8xCzAJBgNVBAYT
 | 
					 | 
				
			||||||
AkRFMT0wOwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21t
 | 
					 | 
				
			||||||
dW5pa2F0aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjRSLUNB
 | 
					 | 
				
			||||||
IDE6UE4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGAjzHbq2asUlqeWbXTQHso
 | 
					 | 
				
			||||||
aVF6YIPVH3c/B2cbuy9HJ/lnE6x0asOzM2DGDqi47xkdAxPc0LZ0fxO87rkmz7xs
 | 
					 | 
				
			||||||
jJObnVrMXpyUSDSp5Y0wqKJdsFdr6mGFOQZteIti8AJnr8xMkwnWVyuOlEXsFe1h
 | 
					 | 
				
			||||||
5gxwQXrOcPinE6qu1t/3PmECBMAAAAGjEjAQMA4GA1UdDwEB/wQEAwIBBjAKBgYr
 | 
					 | 
				
			||||||
JAMDAQIFAAOBgQA+RdocBmA2VV9E5aKPBcp01tdZAvvW9Tve3docArVKR/4/yvSX
 | 
					 | 
				
			||||||
Z+wvzzk+uu4qBp49HN3nqPYMrzbTmjBFu4ce5fkZ7dHF0W1sSBL0rox5z36Aq2re
 | 
					 | 
				
			||||||
JjfEOEmSnNe0+opuh4FSVOssXblXTE8lEQU0FhhItgDx2ADnWZibaxLG4w==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICTTCCAbagAwIBAgIBADANBgkqhkiG9w0BAQQFADBMMQswCQYDVQQGEwJHQjEM
 | 
					 | 
				
			||||||
MAoGA1UEChMDVUNMMRgwFgYDVQQLEw9JQ0UtVEVMIFByb2plY3QxFTATBgNVBAMT
 | 
					 | 
				
			||||||
DFRydXN0RmFjdG9yeTAeFw05NzA0MjIxNDM5MTRaFw05ODA0MjIxNDM5MTRaMEwx
 | 
					 | 
				
			||||||
CzAJBgNVBAYTAkdCMQwwCgYDVQQKEwNVQ0wxGDAWBgNVBAsTD0lDRS1URUwgUHJv
 | 
					 | 
				
			||||||
amVjdDEVMBMGA1UEAxMMVHJ1c3RGYWN0b3J5MIGcMAoGBFUIAQECAgQAA4GNADCB
 | 
					 | 
				
			||||||
iQKBgQCEieR8NcXkUW1f0G6aC6u0i8q/98JqS6RxK5YmHIGKCkuTWAUjzLfUa4dt
 | 
					 | 
				
			||||||
U9igGCjTuxaDqlzEim+t/02pmiBZT9HaX++35MjQPUWmsChcYU5WyzGErXi+rQaw
 | 
					 | 
				
			||||||
zlwS73zM8qiPj/97lXYycWhgL0VaiDSPxRXEUdWoaGruom4mNQIDAQABo0IwQDAd
 | 
					 | 
				
			||||||
BgNVHQ4EFgQUHal1LZr7oVg5z6lYzrhTgZRCmcUwDgYDVR0PAQH/BAQDAgH2MA8G
 | 
					 | 
				
			||||||
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAfaggfl6FZoioecjv0dq8
 | 
					 | 
				
			||||||
/DXo/u11iMZvXn08gjX/zl2b4wtPbShOSY5FhkSm8GeySasz+/Nwb/uzfnIhokWi
 | 
					 | 
				
			||||||
lfPZHtlCWtXbIy/TN51eJyq04ceDCQDWvLC2enVg9KB+GJ34b5c5VaPRzq8MBxsA
 | 
					 | 
				
			||||||
S7ELuYGtmYgYm9NZOIr7yU0=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=RSA Data Security, Inc./OU=Commercial Certification Authority
 | 
					 | 
				
			||||||
issuer= /C=US/O=RSA Data Security, Inc./OU=Commercial Certification Authority
 | 
					 | 
				
			||||||
notBefore=941104185834Z
 | 
					 | 
				
			||||||
notAfter =991103185834Z
 | 
					 | 
				
			||||||
-----BEGIN X509 CERTIFICATE-----
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MIICIzCCAZACBQJBAAAWMA0GCSqGSIb3DQEBAgUAMFwxCzAJBgNVBAYTAlVTMSAw
 | 
					 | 
				
			||||||
HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVy
 | 
					 | 
				
			||||||
Y2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDQxODU4MzRaFw05
 | 
					 | 
				
			||||||
OTExMDMxODU4MzRaMFwxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBT
 | 
					 | 
				
			||||||
ZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVyY2lhbCBDZXJ0aWZpY2F0aW9u
 | 
					 | 
				
			||||||
IEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCk+4Fie84QJ93o
 | 
					 | 
				
			||||||
975sbsZwmdu41QUDaSiCnHJ/lj+O7Kwpkj+KFPhCdr69XQO5kNTQvAayUTNfxMK/
 | 
					 | 
				
			||||||
touPmbZiImDd298ggrTKoi8tUO2UMt7gVY3UaOLgTNLNBRYulWZcYVI4HlGogqHE
 | 
					 | 
				
			||||||
7yXpCuaLK44xZtn42f29O2nZ6wIDAQABMA0GCSqGSIb3DQEBAgUAA34AdrW2EP4j
 | 
					 | 
				
			||||||
9/dZYkuwX5zBaLxJu7NJbyFHXSudVMQAKD+YufKKg5tgf+tQx6sFEC097TgCwaVI
 | 
					 | 
				
			||||||
0v5loMC86qYjFmZsGySp8+x5NRhPJsjjr1BKx6cxa9B8GJ1Qv6km+iYrRpwUqbtb
 | 
					 | 
				
			||||||
MJhCKLVLU7tDCZJAuqiqWqTGtotXTcU=
 | 
					 | 
				
			||||||
-----END X509 CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority
 | 
					 | 
				
			||||||
issuer= /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority
 | 
					 | 
				
			||||||
notBefore=941109235417Z
 | 
					 | 
				
			||||||
notAfter =991231235417Z
 | 
					 | 
				
			||||||
-----BEGIN X509 CERTIFICATE-----
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MIICKTCCAZYCBQJBAAABMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw
 | 
					 | 
				
			||||||
HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl
 | 
					 | 
				
			||||||
IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDkyMzU0MTda
 | 
					 | 
				
			||||||
Fw05OTEyMzEyMzU0MTdaMF8xCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0
 | 
					 | 
				
			||||||
YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJlIFNlcnZlciBDZXJ0aWZp
 | 
					 | 
				
			||||||
Y2F0aW9uIEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCSznrB
 | 
					 | 
				
			||||||
roM+WqqJg1esJQF2DK2ujiw3zus1eGRUA+WEQFHJv48I4oqCCNIWhjdV6bEhAq12
 | 
					 | 
				
			||||||
aIGaBaJLyUslZiJWbIgHj/eBWW2EB2VwE3F2Ppt3TONQiVaYSLkdpykaEy5KEVmc
 | 
					 | 
				
			||||||
HhXVSVQsczppgrGXOZxtcGdI5d0t1sgeewIDAQABMA0GCSqGSIb3DQEBAgUAA34A
 | 
					 | 
				
			||||||
iNHReSHO4ovo+MF9NFM/YYPZtgs4F7boviGNjwC4i1N+RGceIr2XJ+CchcxK9oU7
 | 
					 | 
				
			||||||
suK+ktPlDemvXA4MRpX/oRxePug2WHpzpgr4IhFrwwk4fia7c+8AvQKk8xQNMD9h
 | 
					 | 
				
			||||||
cHsg/jKjn7P0Z1LctO6EjJY2IN6BCINxIYoPnqk=
 | 
					 | 
				
			||||||
-----END X509 CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=VeriSign, Inc./OU=Class 2 Public Primary Certification Authority
 | 
					 | 
				
			||||||
notBefore=Jan 29 00:00:00 1996 GMT
 | 
					 | 
				
			||||||
notAfter=Jan  7 23:59:59 2004 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICPTCCAaYCEQC6WslMBTuS1qe2307QU5INMA0GCSqGSIb3DQEBAgUAMF8xCzAJ
 | 
					 | 
				
			||||||
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
 | 
					 | 
				
			||||||
c3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05
 | 
					 | 
				
			||||||
NjAxMjkwMDAwMDBaFw0wNDAxMDcyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD
 | 
					 | 
				
			||||||
VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMiBQdWJsaWMgUHJp
 | 
					 | 
				
			||||||
bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB
 | 
					 | 
				
			||||||
jQAwgYkCgYEAtlqLow1qI4OAa885h/QhEzMGTCWi7VUSl8WngLn6g8EgoPovFQ18
 | 
					 | 
				
			||||||
oWBrfnks+gYPOq72G2+x0v8vKFJfg31LxHq3+GYfgFT8t8KOWUoUV0bRmpO+QZED
 | 
					 | 
				
			||||||
uxWAk1zr58wIbD8+s0r8/0tsI9VQgiZEGY4jw3HqGSRHBJ51v8imAB8CAwEAATAN
 | 
					 | 
				
			||||||
BgkqhkiG9w0BAQIFAAOBgQC2AB+TV6QHp0DOZUA/VV7t7/pUSaUw1iF8YYfug5ML
 | 
					 | 
				
			||||||
v7Qz8pisnwa/TqjOFIFMywROWMPPX+5815pvy0GKt3+BuP+EYcYnQ2UdDOyxAArd
 | 
					 | 
				
			||||||
G6S7x3ggKLKi3TaVLuFUT79guXdoEZkj6OpS6KoATmdOu5C1RZtG644W78QzWzM9
 | 
					 | 
				
			||||||
1Q==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
 | 
					 | 
				
			||||||
notBefore=Jan 29 00:00:00 1996 GMT
 | 
					 | 
				
			||||||
notAfter=Jan  7 23:59:59 2004 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICPTCCAaYCEQDknv3zOugOz6URPhmkJAIyMA0GCSqGSIb3DQEBAgUAMF8xCzAJ
 | 
					 | 
				
			||||||
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
 | 
					 | 
				
			||||||
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05
 | 
					 | 
				
			||||||
NjAxMjkwMDAwMDBaFw0wNDAxMDcyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD
 | 
					 | 
				
			||||||
VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp
 | 
					 | 
				
			||||||
bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB
 | 
					 | 
				
			||||||
jQAwgYkCgYEAyVxZnvIbigEUtBDfBEDb41evakVAj4QMC9Ez2dkRz+4CWB8l9yqo
 | 
					 | 
				
			||||||
RAWq7AMfeH+ek7maAKojfdashaJjRcdyJ8z0TMZ1cdI5709C8HXfCpDGjiBvmA/4
 | 
					 | 
				
			||||||
rCNfcCk2pMmG57GaIMtTpYXnPb59mv4kRTPcdhXtD6JxZExlLoFoRacCAwEAATAN
 | 
					 | 
				
			||||||
BgkqhkiG9w0BAQIFAAOBgQBhcOwvP579K+ZoVCGwZ3kIDCCWMYoNer62Jt95LCJp
 | 
					 | 
				
			||||||
STbjl3diYaIy13pUITa6Ask05yXaRDWw0lyAXbOU+Pms7qRgdSoflUkjsUp89LNH
 | 
					 | 
				
			||||||
ciFbfperVKxi513srpvSybIk+4Kt6WcVS7qqpvCXoPawl1cAyAw8CaCCBLpB2veZ
 | 
					 | 
				
			||||||
pA==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
 | 
					 | 
				
			||||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
 | 
					 | 
				
			||||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
 | 
					 | 
				
			||||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
 | 
					 | 
				
			||||||
MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
 | 
					 | 
				
			||||||
MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
 | 
					 | 
				
			||||||
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
 | 
					 | 
				
			||||||
dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
 | 
					 | 
				
			||||||
cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
 | 
					 | 
				
			||||||
DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
 | 
					 | 
				
			||||||
gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
 | 
					 | 
				
			||||||
yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
 | 
					 | 
				
			||||||
L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
 | 
					 | 
				
			||||||
EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
 | 
					 | 
				
			||||||
7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
 | 
					 | 
				
			||||||
QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
 | 
					 | 
				
			||||||
qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
 | 
					 | 
				
			||||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
 | 
					 | 
				
			||||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
 | 
					 | 
				
			||||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
 | 
					 | 
				
			||||||
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
 | 
					 | 
				
			||||||
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
 | 
					 | 
				
			||||||
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
 | 
					 | 
				
			||||||
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
 | 
					 | 
				
			||||||
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
 | 
					 | 
				
			||||||
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
 | 
					 | 
				
			||||||
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
 | 
					 | 
				
			||||||
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
 | 
					 | 
				
			||||||
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
 | 
					 | 
				
			||||||
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
 | 
					 | 
				
			||||||
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
 | 
					 | 
				
			||||||
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
 | 
					 | 
				
			||||||
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=VeriSign, Inc./OU=Class 1 Public Primary Certification Authority
 | 
					 | 
				
			||||||
notBefore=Jan 29 00:00:00 1996 GMT
 | 
					 | 
				
			||||||
notAfter=Jan  7 23:59:59 2020 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICPDCCAaUCEDJQM89Q0VbzXIGtZVxPyCUwDQYJKoZIhvcNAQECBQAwXzELMAkG
 | 
					 | 
				
			||||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
 | 
					 | 
				
			||||||
cyAxIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
 | 
					 | 
				
			||||||
MDEyOTAwMDAwMFoXDTIwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
 | 
					 | 
				
			||||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmlt
 | 
					 | 
				
			||||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
 | 
					 | 
				
			||||||
ADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0f
 | 
					 | 
				
			||||||
zGVuDLDQVoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHi
 | 
					 | 
				
			||||||
TkVWaR94AoDa3EeRKbs2yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0G
 | 
					 | 
				
			||||||
CSqGSIb3DQEBAgUAA4GBAEtEZmBoZOSYG/OwcuaViXzde7OVwB0u2NgZ0C00PcZQ
 | 
					 | 
				
			||||||
mhCGjKo/O6gE/DdSlcPZydvN8oYGxLEb8IKIMEKOF1AcZHq4PplJdJf8rAJD+5YM
 | 
					 | 
				
			||||||
VgQlDHx8h50kp9jwMim1pN9dokzFFjKoQvZFprY2ueC/ZTaTwtLXa9zeWdaiNfhF
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
 | 
					 | 
				
			||||||
notBefore=Jan 29 00:00:00 1996 GMT
 | 
					 | 
				
			||||||
notAfter=Aug  1 23:59:59 2028 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
 | 
					 | 
				
			||||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
 | 
					 | 
				
			||||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
 | 
					 | 
				
			||||||
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
 | 
					 | 
				
			||||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
 | 
					 | 
				
			||||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
 | 
					 | 
				
			||||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
 | 
					 | 
				
			||||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
 | 
					 | 
				
			||||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
 | 
					 | 
				
			||||||
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
 | 
					 | 
				
			||||||
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
 | 
					 | 
				
			||||||
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
subject=/C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority
 | 
					 | 
				
			||||||
notBefore=Nov  9 00:00:00 1994 GMT
 | 
					 | 
				
			||||||
notAfter=Jan  7 23:59:59 2010 GMT
 | 
					 | 
				
			||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG
 | 
					 | 
				
			||||||
A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD
 | 
					 | 
				
			||||||
VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0
 | 
					 | 
				
			||||||
MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV
 | 
					 | 
				
			||||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy
 | 
					 | 
				
			||||||
dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ
 | 
					 | 
				
			||||||
ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII
 | 
					 | 
				
			||||||
0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI
 | 
					 | 
				
			||||||
uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI
 | 
					 | 
				
			||||||
hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3
 | 
					 | 
				
			||||||
YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc
 | 
					 | 
				
			||||||
1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
@@ -1,23 +0,0 @@
 | 
				
			|||||||
-----BEGIN CERTIFICATE-----
 | 
					 | 
				
			||||||
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMC
 | 
					 | 
				
			||||||
VVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBD
 | 
					 | 
				
			||||||
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9v
 | 
					 | 
				
			||||||
dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDAxMDExMTY0MTI4WhcNMjEwMTE0
 | 
					 | 
				
			||||||
MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSww
 | 
					 | 
				
			||||||
KgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0G
 | 
					 | 
				
			||||||
A1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEi
 | 
					 | 
				
			||||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n13
 | 
					 | 
				
			||||||
5zHCLielTWi5MbqNQ1mXx3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHE
 | 
					 | 
				
			||||||
SxP9cMIlrCL1dQu3U+SlK93OvRw6esP3E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4O
 | 
					 | 
				
			||||||
JgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5OEL8pahbSCOz6+MlsoCu
 | 
					 | 
				
			||||||
ltQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4jsNtlAHCE
 | 
					 | 
				
			||||||
AQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMB
 | 
					 | 
				
			||||||
AAGjYTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcB
 | 
					 | 
				
			||||||
CzAyMDAGCCsGAQUFBwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRw
 | 
					 | 
				
			||||||
b2xpY3kwDQYJKoZIhvcNAQEFBQADggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo
 | 
					 | 
				
			||||||
7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrvm+0fazbuSCUlFLZWohDo7qd/
 | 
					 | 
				
			||||||
0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0ROhPs7fpvcmR7
 | 
					 | 
				
			||||||
nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
 | 
					 | 
				
			||||||
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ
 | 
					 | 
				
			||||||
33ZwmVxwQ023tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
 | 
					 | 
				
			||||||
-----END CERTIFICATE-----
 | 
					 | 
				
			||||||
							
								
								
									
										91
									
								
								config
									
									
									
									
									
								
							
							
						
						
									
										91
									
								
								config
									
									
									
									
									
								
							@@ -501,20 +501,7 @@ case "$GUESSOS" in
 | 
				
			|||||||
	OUT="irix-mips3-$CC"
 | 
						OUT="irix-mips3-$CC"
 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
  mips4-sgi-irix64)
 | 
					  mips4-sgi-irix64)
 | 
				
			||||||
	echo "WARNING! If you wish to build 64-bit library, then you have to"
 | 
						OUT="irix64-mips4-$CC"
 | 
				
			||||||
	echo "         invoke './Configure irix64-mips4-$CC' *manually*."
 | 
					 | 
				
			||||||
	if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
	  echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
	  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
        #CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
 | 
					 | 
				
			||||||
        #CPU=${CPU:-0}
 | 
					 | 
				
			||||||
        #if [ $CPU -ge 5000 ]; then
 | 
					 | 
				
			||||||
        #        options="$options -mips4"
 | 
					 | 
				
			||||||
        #else
 | 
					 | 
				
			||||||
        #        options="$options -mips3"
 | 
					 | 
				
			||||||
        #fi
 | 
					 | 
				
			||||||
	OUT="irix-mips3-$CC"
 | 
					 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
  ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
 | 
					  ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
 | 
				
			||||||
  ppc-apple-darwin*) OUT="darwin-ppc-cc" ;;
 | 
					  ppc-apple-darwin*) OUT="darwin-ppc-cc" ;;
 | 
				
			||||||
@@ -527,32 +514,19 @@ case "$GUESSOS" in
 | 
				
			|||||||
	esac
 | 
						esac
 | 
				
			||||||
	if [ "$CC" = "gcc" ]; then
 | 
						if [ "$CC" = "gcc" ]; then
 | 
				
			||||||
	    case ${ISA:-generic} in
 | 
						    case ${ISA:-generic} in
 | 
				
			||||||
	    EV5|EV45)		options="$options -march=ev5";;
 | 
						    EV5|EV45)		options="$options -mcpu=ev5";;
 | 
				
			||||||
	    EV56|PCA56)		options="$options -march=ev56";;
 | 
						    EV56|PCA56)		options="$options -mcpu=ev56";;
 | 
				
			||||||
	    *)			options="$options -march=ev6";;
 | 
						    *)			options="$options -mcpu=ev6";;
 | 
				
			||||||
	    esac
 | 
						    esac
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
  ppc64-*-linux2)
 | 
					  ppc64-*-linux2)
 | 
				
			||||||
	echo "WARNING! If you wish to build 64-bit library, then you have to"
 | 
						OUT="linux-ppc64"
 | 
				
			||||||
	echo "         invoke './Configure linux-ppc64' *manually*."
 | 
					 | 
				
			||||||
	if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
	    echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
	    (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	OUT="linux-ppc"
 | 
					 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
  ppc-*-linux2) OUT="linux-ppc" ;;
 | 
					  ppc-*-linux2) OUT="linux-ppc" ;;
 | 
				
			||||||
  ia64-*-linux?) OUT="linux-ia64" ;;
 | 
					  ia64-*-linux?) OUT="linux-ia64" ;;
 | 
				
			||||||
  sparc64-*-linux2)
 | 
					  sparc64-*-linux2)
 | 
				
			||||||
	echo "WARNING! If you *know* that your GNU C supports 64-bit/V9 ABI"
 | 
						OUT="linux64-sparcv9" ;;
 | 
				
			||||||
	echo "         and wish to build 64-bit library, then you have to"
 | 
					 | 
				
			||||||
	echo "         invoke './Configure linux64-sparcv9' *manually*."
 | 
					 | 
				
			||||||
	if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
	  echo "          You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
	  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	OUT="linux-sparcv9" ;;
 | 
					 | 
				
			||||||
  sparc-*-linux2)
 | 
					  sparc-*-linux2)
 | 
				
			||||||
	KARCH=`awk '/^type/{print$3;exit(0);}' /proc/cpuinfo`
 | 
						KARCH=`awk '/^type/{print$3;exit(0);}' /proc/cpuinfo`
 | 
				
			||||||
	case ${KARCH:-sun4} in
 | 
						case ${KARCH:-sun4} in
 | 
				
			||||||
@@ -588,7 +562,8 @@ case "$GUESSOS" in
 | 
				
			|||||||
  sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
 | 
					  sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
 | 
				
			||||||
  sh*-*-linux2)  OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
 | 
					  sh*-*-linux2)  OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
 | 
				
			||||||
  m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
 | 
					  m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
 | 
				
			||||||
  s390*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN -DNO_ASM" ;;
 | 
					  s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN -DNO_ASM" ;;
 | 
				
			||||||
 | 
					  s390x-*-linux2) OUT="linux-s390x" ;;
 | 
				
			||||||
  x86_64-*-linux?) OUT="linux-x86_64" ;;
 | 
					  x86_64-*-linux?) OUT="linux-x86_64" ;;
 | 
				
			||||||
  *86-*-linux2) OUT="linux-elf"
 | 
					  *86-*-linux2) OUT="linux-elf"
 | 
				
			||||||
	if [ "$GCCVER" -gt 28 ]; then
 | 
						if [ "$GCCVER" -gt 28 ]; then
 | 
				
			||||||
@@ -604,37 +579,18 @@ case "$GUESSOS" in
 | 
				
			|||||||
        fi ;;
 | 
					        fi ;;
 | 
				
			||||||
  *-*-linux1) OUT="linux-aout" ;;
 | 
					  *-*-linux1) OUT="linux-aout" ;;
 | 
				
			||||||
  *-*-linux2) OUT="linux-generic32" ;;
 | 
					  *-*-linux2) OUT="linux-generic32" ;;
 | 
				
			||||||
  sun4u*-*-solaris2)
 | 
					  sun4[uv]*-*-solaris2)
 | 
				
			||||||
	OUT="solaris-sparcv9-$CC"
 | 
						OUT="solaris-sparcv9-$CC"
 | 
				
			||||||
	ISA64=`(isalist) 2>/dev/null | grep sparcv9`
 | 
						ISA64=`(isalist) 2>/dev/null | grep sparcv9`
 | 
				
			||||||
	if [ "$ISA64" != "" ]; then
 | 
						if [ "$ISA64" != "" ]; then
 | 
				
			||||||
	    if [ "$CC" = "cc" -a $CCVER -ge 50 ]; then
 | 
						    if [ "$CC" = "cc" -a $CCVER -ge 50 ]; then
 | 
				
			||||||
		echo "WARNING! If you wish to build 64-bit library, then you have to"
 | 
							OUT="solaris64-sparcv9-cc"
 | 
				
			||||||
		echo "         invoke './Configure solaris64-sparcv9-cc' *manually*."
 | 
					 | 
				
			||||||
		if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		  echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	    elif [ "$CC" = "gcc" -a "$GCC_ARCH" = "-m64" ]; then
 | 
						    elif [ "$CC" = "gcc" -a "$GCC_ARCH" = "-m64" ]; then
 | 
				
			||||||
		# $GCC_ARCH denotes default ABI chosen by compiler driver
 | 
							# $GCC_ARCH denotes default ABI chosen by compiler driver
 | 
				
			||||||
		# (first one found on the $PATH). I assume that user
 | 
							# (first one found on the $PATH). I assume that user
 | 
				
			||||||
		# expects certain consistency with the rest of his builds
 | 
							# expects certain consistency with the rest of his builds
 | 
				
			||||||
		# and therefore switch over to 64-bit. <appro>
 | 
							# and therefore switch over to 64-bit. <appro>
 | 
				
			||||||
		OUT="solaris64-sparcv9-gcc"
 | 
							OUT="solaris64-sparcv9-gcc"
 | 
				
			||||||
		echo "WARNING! If you wish to build 32-bit library, then you have to"
 | 
					 | 
				
			||||||
		echo "         invoke './Configure solaris-sparcv9-gcc' *manually*."
 | 
					 | 
				
			||||||
		if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		  echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	    elif [ "$GCC_ARCH" = "-m32" ]; then
 | 
					 | 
				
			||||||
		echo "NOTICE! If you *know* that your GNU C supports 64-bit/V9 ABI"
 | 
					 | 
				
			||||||
		echo "        and wish to build 64-bit library, then you have to"
 | 
					 | 
				
			||||||
		echo "        invoke './Configure solaris64-sparcv9-gcc' *manually*."
 | 
					 | 
				
			||||||
		if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		  echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	    fi
 | 
						    fi
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
@@ -655,8 +611,8 @@ case "$GUESSOS" in
 | 
				
			|||||||
  *-*-sunos4)		OUT="sunos-$CC" ;;
 | 
					  *-*-sunos4)		OUT="sunos-$CC" ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *86*-*-bsdi4)		OUT="BSD-x86-elf"; options="$options no-sse2 -ldl" ;;
 | 
					  *86*-*-bsdi4)		OUT="BSD-x86-elf"; options="$options no-sse2 -ldl" ;;
 | 
				
			||||||
  alpha*-*-*bsd*)	OUT="BSD-generic64; options="$options -DL_ENDIAN" ;;
 | 
					  alpha*-*-*bsd*)	OUT="BSD-generic64"; options="$options -DL_ENDIAN" ;;
 | 
				
			||||||
  powerpc64-*-*bsd*)	OUT="BSD-generic64; options="$options -DB_ENDIAN" ;;
 | 
					  powerpc64-*-*bsd*)	OUT="BSD-generic64"; options="$options -DB_ENDIAN" ;;
 | 
				
			||||||
  sparc64-*-*bsd*)	OUT="BSD-sparc64" ;;
 | 
					  sparc64-*-*bsd*)	OUT="BSD-sparc64" ;;
 | 
				
			||||||
  ia64-*-*bsd*)		OUT="BSD-ia64" ;;
 | 
					  ia64-*-*bsd*)		OUT="BSD-ia64" ;;
 | 
				
			||||||
  amd64-*-*bsd*)	OUT="BSD-x86_64" ;;
 | 
					  amd64-*-*bsd*)	OUT="BSD-x86_64" ;;
 | 
				
			||||||
@@ -701,23 +657,11 @@ case "$GUESSOS" in
 | 
				
			|||||||
	CPU_VERSION=${CPU_VERSION:-0}
 | 
						CPU_VERSION=${CPU_VERSION:-0}
 | 
				
			||||||
	# See <sys/unistd.h> for further info on CPU_VERSION.
 | 
						# See <sys/unistd.h> for further info on CPU_VERSION.
 | 
				
			||||||
	if   [ $CPU_VERSION -ge 768 ]; then	# IA-64 CPU
 | 
						if   [ $CPU_VERSION -ge 768 ]; then	# IA-64 CPU
 | 
				
			||||||
	     echo "WARNING! 64-bit ABI is the default configured ABI on HP-UXi."
 | 
					 | 
				
			||||||
	     echo "         If you wish to build 32-bit library, the you have to"
 | 
					 | 
				
			||||||
	     echo "         invoke './Configure hpux-ia64-cc' *manually*."
 | 
					 | 
				
			||||||
	     if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		(trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
	     fi
 | 
					 | 
				
			||||||
	     OUT="hpux64-ia64-cc"
 | 
						     OUT="hpux64-ia64-cc"
 | 
				
			||||||
	elif [ $CPU_VERSION -ge 532 ]; then	# PA-RISC 2.x CPU
 | 
						elif [ $CPU_VERSION -ge 532 ]; then	# PA-RISC 2.x CPU
 | 
				
			||||||
	     OUT=${OUT:-"hpux-parisc2-${CC}"}
 | 
						     OUT=${OUT:-"hpux-parisc2-${CC}"}
 | 
				
			||||||
	     if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
 | 
						     if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
 | 
				
			||||||
		echo "WARNING! If you wish to build 64-bit library then you have to"
 | 
							OUT="hpux64-parisc2-${CC}"
 | 
				
			||||||
		echo "         invoke './Configure hpux64-parisc2-cc' *manually*."
 | 
					 | 
				
			||||||
		if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		  echo "         You have about 5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		  (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	     fi
 | 
						     fi
 | 
				
			||||||
	elif [ $CPU_VERSION -ge 528 ]; then	# PA-RISC 1.1+ CPU
 | 
						elif [ $CPU_VERSION -ge 528 ]; then	# PA-RISC 1.1+ CPU
 | 
				
			||||||
	     OUT="hpux-parisc-${CC}"
 | 
						     OUT="hpux-parisc-${CC}"
 | 
				
			||||||
@@ -740,12 +684,7 @@ case "$GUESSOS" in
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
	    OUT="aix-cc"
 | 
						    OUT="aix-cc"
 | 
				
			||||||
	    if [ $KERNEL_BITS -eq 64 ]; then
 | 
						    if [ $KERNEL_BITS -eq 64 ]; then
 | 
				
			||||||
		echo "WARNING! If you wish to build 64-bit kit, then you have to"
 | 
							OUT="aix64-cc"
 | 
				
			||||||
		echo "         invoke './Configure aix64-cc' *manually*."
 | 
					 | 
				
			||||||
		if [ "$TEST" = "false" -a -t 1 ]; then
 | 
					 | 
				
			||||||
		    echo "         You have ~5 seconds to press Ctrl-C to abort."
 | 
					 | 
				
			||||||
		    (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	    fi
 | 
						    fi
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	if (lsattr -E -O -l `lsdev -c processor|awk '{print$1;exit}'` | grep -i powerpc) >/dev/null 2>&1; then
 | 
						if (lsattr -E -O -l `lsdev -c processor|awk '{print$1;exit}'` | grep -i powerpc) >/dev/null 2>&1; then
 | 
				
			||||||
@@ -797,7 +736,7 @@ case "$GUESSOS" in
 | 
				
			|||||||
  i386-*) options="$options 386" ;;
 | 
					  i386-*) options="$options 386" ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for i in aes bf camellia cast des dh dsa ec hmac idea md2 md5 mdc2 rc2 rc4 rc5 ripemd rsa sha
 | 
					for i in aes bf camellia cast des dh dsa ec hmac idea md2 md5 mdc2 rc2 rc4 rc5 ripemd rsa seed sha
 | 
				
			||||||
do
 | 
					do
 | 
				
			||||||
  if [ ! -d crypto/$i ]
 | 
					  if [ ! -d crypto/$i ]
 | 
				
			||||||
  then
 | 
					  then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,8 +33,8 @@ GENERAL=Makefile README crypto-lib.com install.com
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIB= $(TOP)/libcrypto.a
 | 
					LIB= $(TOP)/libcrypto.a
 | 
				
			||||||
SHARED_LIB= libcrypto$(SHLIB_EXT)
 | 
					SHARED_LIB= libcrypto$(SHLIB_EXT)
 | 
				
			||||||
LIBSRC=	cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
 | 
					LIBSRC=	cryptlib.c dyn_lck.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c o_init.c fips_err.c 
 | 
				
			||||||
LIBOBJ= cryptlib.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
 | 
					LIBOBJ= cryptlib.o dyn_lck.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o o_init.o fips_err.o $(CPUID_OBJ)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRC= $(LIBSRC)
 | 
					SRC= $(LIBSRC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -47,7 +47,7 @@ ALL=    $(GENERAL) $(SRC) $(HEADER)
 | 
				
			|||||||
top:
 | 
					top:
 | 
				
			||||||
	@(cd ..; $(MAKE) DIRS=$(DIR) all)
 | 
						@(cd ..; $(MAKE) DIRS=$(DIR) all)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: shared
 | 
					all: lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
buildinf.h: ../Makefile
 | 
					buildinf.h: ../Makefile
 | 
				
			||||||
	( echo "#ifndef MK1MF_BUILD"; \
 | 
						( echo "#ifndef MK1MF_BUILD"; \
 | 
				
			||||||
@@ -95,10 +95,10 @@ links:
 | 
				
			|||||||
	@target=links; $(RECURSIVE_MAKE)
 | 
						@target=links; $(RECURSIVE_MAKE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# lib: and $(LIB): are splitted to avoid end-less loop
 | 
					# lib: and $(LIB): are splitted to avoid end-less loop
 | 
				
			||||||
lib:	$(LIB)
 | 
					lib:	buildinf.h $(LIB) subdirs
 | 
				
			||||||
	@touch lib
 | 
						@touch lib
 | 
				
			||||||
$(LIB):	$(LIBOBJ)
 | 
					$(LIB):	$(LIBOBJ)
 | 
				
			||||||
	$(AR) $(LIB) $(LIBOBJ)
 | 
						$(ARX) $(LIB) $(LIBOBJ)
 | 
				
			||||||
	$(RANLIB) $(LIB) || echo Never mind.
 | 
						$(RANLIB) $(LIB) || echo Never mind.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
shared: buildinf.h lib subdirs
 | 
					shared: buildinf.h lib subdirs
 | 
				
			||||||
@@ -159,6 +159,13 @@ cversion.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			|||||||
cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
					cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
				
			||||||
cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h
 | 
					cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h
 | 
				
			||||||
cversion.o: cryptlib.h cversion.c
 | 
					cversion.o: cryptlib.h cversion.c
 | 
				
			||||||
 | 
					dyn_lck.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
				
			||||||
 | 
					dyn_lck.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 | 
				
			||||||
 | 
					dyn_lck.o: ../include/openssl/err.h ../include/openssl/lhash.h
 | 
				
			||||||
 | 
					dyn_lck.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			||||||
 | 
					dyn_lck.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
				
			||||||
 | 
					dyn_lck.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
 | 
				
			||||||
 | 
					dyn_lck.o: dyn_lck.c
 | 
				
			||||||
ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c
 | 
					ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c
 | 
				
			||||||
ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
					ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
				
			||||||
ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 | 
					ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 | 
				
			||||||
@@ -167,6 +174,13 @@ ex_data.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			|||||||
ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
					ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
				
			||||||
ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
 | 
					ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
 | 
				
			||||||
ex_data.o: ex_data.c
 | 
					ex_data.o: ex_data.c
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/bio.h ../include/openssl/crypto.h
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/e_os2.h ../include/openssl/err.h
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/fips.h ../include/openssl/lhash.h
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
 | 
				
			||||||
 | 
					fips_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h fips_err.c
 | 
				
			||||||
 | 
					fips_err.o: fips_err.h
 | 
				
			||||||
mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
					mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
				
			||||||
mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 | 
					mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 | 
				
			||||||
mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
 | 
					mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
 | 
				
			||||||
@@ -187,6 +201,12 @@ mem_dbg.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
 | 
				
			|||||||
mem_dbg.o: mem_dbg.c
 | 
					mem_dbg.o: mem_dbg.c
 | 
				
			||||||
o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
 | 
					o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
 | 
				
			||||||
o_dir.o: LPdir_unix.c o_dir.c o_dir.h
 | 
					o_dir.o: LPdir_unix.c o_dir.c o_dir.h
 | 
				
			||||||
 | 
					o_init.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/crypto.h
 | 
				
			||||||
 | 
					o_init.o: ../include/openssl/e_os2.h ../include/openssl/err.h
 | 
				
			||||||
 | 
					o_init.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
 | 
				
			||||||
 | 
					o_init.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 | 
				
			||||||
 | 
					o_init.o: ../include/openssl/safestack.h ../include/openssl/stack.h
 | 
				
			||||||
 | 
					o_init.o: ../include/openssl/symhacks.h o_init.c
 | 
				
			||||||
o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
 | 
					o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
 | 
				
			||||||
o_str.o: o_str.c o_str.h
 | 
					o_str.o: o_str.c o_str.h
 | 
				
			||||||
o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
 | 
					o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,8 +24,8 @@ APPS=
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIB=$(TOP)/libcrypto.a
 | 
					LIB=$(TOP)/libcrypto.a
 | 
				
			||||||
LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \
 | 
					LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \
 | 
				
			||||||
       aes_ctr.c aes_ige.c
 | 
					       aes_ctr.c aes_ige.c aes_wrap.c
 | 
				
			||||||
LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o \
 | 
					LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \
 | 
				
			||||||
       $(AES_ASM_OBJ)
 | 
					       $(AES_ASM_OBJ)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRC= $(LIBSRC)
 | 
					SRC= $(LIBSRC)
 | 
				
			||||||
@@ -41,7 +41,7 @@ top:
 | 
				
			|||||||
all:	lib
 | 
					all:	lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lib:	$(LIBOBJ)
 | 
					lib:	$(LIBOBJ)
 | 
				
			||||||
	$(AR) $(LIB) $(LIBOBJ)
 | 
						$(ARX) $(LIB) $(LIBOBJ)
 | 
				
			||||||
	$(RANLIB) $(LIB) || echo Never mind.
 | 
						$(RANLIB) $(LIB) || echo Never mind.
 | 
				
			||||||
	@touch lib
 | 
						@touch lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,6 +57,11 @@ ax86-cof.s: asm/aes-586.pl ../perlasm/x86asm.pl
 | 
				
			|||||||
ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
 | 
					ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
 | 
				
			||||||
	(cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
 | 
						(cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					aes-x86_64.s: asm/aes-x86_64.pl
 | 
				
			||||||
 | 
						$(PERL) asm/aes-x86_64.pl $@
 | 
				
			||||||
 | 
					# GNU make "catch all"
 | 
				
			||||||
 | 
					aes-%.s:	asm/aes-%.pl;	$(PERL) $< $(CFLAGS) > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
files:
 | 
					files:
 | 
				
			||||||
	$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
 | 
						$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,6 +66,10 @@
 | 
				
			|||||||
#define AES_MAXNR 14
 | 
					#define AES_MAXNR 14
 | 
				
			||||||
#define AES_BLOCK_SIZE 16
 | 
					#define AES_BLOCK_SIZE 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
 | 
					#define FIPS_AES_SIZE_T	int
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef  __cplusplus
 | 
					#ifdef  __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -130,6 +134,12 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
			const AES_KEY *key2, const unsigned char *ivec,
 | 
								const AES_KEY *key2, const unsigned char *ivec,
 | 
				
			||||||
			const int enc);
 | 
								const int enc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			||||||
 | 
							unsigned char *out,
 | 
				
			||||||
 | 
							const unsigned char *in, unsigned int inlen);
 | 
				
			||||||
 | 
					int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			||||||
 | 
							unsigned char *out,
 | 
				
			||||||
 | 
							const unsigned char *in, unsigned int inlen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef  __cplusplus
 | 
					#ifdef  __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,6 +59,7 @@
 | 
				
			|||||||
#include <openssl/aes.h>
 | 
					#include <openssl/aes.h>
 | 
				
			||||||
#include "aes_locl.h"
 | 
					#include "aes_locl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_FIPS_AES_ASM)
 | 
				
			||||||
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
 | 
					void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			||||||
		     const unsigned long length, const AES_KEY *key,
 | 
							     const unsigned long length, const AES_KEY *key,
 | 
				
			||||||
		     unsigned char *ivec, const int enc) {
 | 
							     unsigned char *ivec, const int enc) {
 | 
				
			||||||
@@ -129,3 +130,4 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <openssl/aes.h>
 | 
					#include <openssl/aes.h>
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
 | 
					#include <openssl/fips.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "aes_locl.h"
 | 
					#include "aes_locl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -631,6 +635,10 @@ int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
 | 
				
			|||||||
   	int i = 0;
 | 
					   	int i = 0;
 | 
				
			||||||
	u32 temp;
 | 
						u32 temp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
 | 
						FIPS_selftest_check();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!userKey || !key)
 | 
						if (!userKey || !key)
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	if (bits != 128 && bits != 192 && bits != 256)
 | 
						if (bits != 128 && bits != 192 && bits != 256)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,21 +54,25 @@
 | 
				
			|||||||
#include <openssl/aes.h>
 | 
					#include <openssl/aes.h>
 | 
				
			||||||
#include "aes_locl.h"
 | 
					#include "aes_locl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					#define N_WORDS (AES_BLOCK_SIZE / sizeof(unsigned long))
 | 
				
			||||||
static void hexdump(FILE *f,const char *title,const unsigned char *s,int l)
 | 
					typedef struct {
 | 
				
			||||||
    {
 | 
					        unsigned long data[N_WORDS];
 | 
				
			||||||
    int n=0;
 | 
					} aes_block_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fprintf(f,"%s",title);
 | 
					/* XXX: probably some better way to do this */
 | 
				
			||||||
    for( ; n < l ; ++n)
 | 
					#if defined(__i386__) || defined(__x86_64__)
 | 
				
			||||||
		{
 | 
					#define UNALIGNED_MEMOPS_ARE_FAST 1
 | 
				
			||||||
		if((n%16) == 0)
 | 
					#else
 | 
				
			||||||
			fprintf(f,"\n%04x",n);
 | 
					#define UNALIGNED_MEMOPS_ARE_FAST 0
 | 
				
			||||||
		fprintf(f," %02x",s[n]);
 | 
					#endif
 | 
				
			||||||
		}
 | 
					
 | 
				
			||||||
    fprintf(f,"\n");
 | 
					#if UNALIGNED_MEMOPS_ARE_FAST
 | 
				
			||||||
    }
 | 
					#define load_block(d, s)        (d) = *(const aes_block_t *)(s)
 | 
				
			||||||
*/
 | 
					#define store_block(d, s)       *(aes_block_t *)(d) = (s)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define load_block(d, s)        memcpy((d).data, (s), AES_BLOCK_SIZE)
 | 
				
			||||||
 | 
					#define store_block(d, s)       memcpy((d), (s).data, AES_BLOCK_SIZE)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* N.B. The IV for this mode is _twice_ the block size */
 | 
					/* N.B. The IV for this mode is _twice_ the block size */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -77,68 +81,125 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
					 unsigned char *ivec, const int enc)
 | 
										 unsigned char *ivec, const int enc)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	unsigned long n;
 | 
						unsigned long n;
 | 
				
			||||||
	unsigned long len = length;
 | 
						unsigned long len;
 | 
				
			||||||
	unsigned char tmp[AES_BLOCK_SIZE];
 | 
					 | 
				
			||||||
	unsigned char tmp2[AES_BLOCK_SIZE];
 | 
					 | 
				
			||||||
	unsigned char prev[AES_BLOCK_SIZE];
 | 
					 | 
				
			||||||
	const unsigned char *iv = ivec;
 | 
					 | 
				
			||||||
	const unsigned char *iv2 = ivec + AES_BLOCK_SIZE;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	OPENSSL_assert(in && out && key && ivec);
 | 
						OPENSSL_assert(in && out && key && ivec);
 | 
				
			||||||
	OPENSSL_assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
 | 
						OPENSSL_assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
 | 
				
			||||||
	OPENSSL_assert((length%AES_BLOCK_SIZE) == 0);
 | 
						OPENSSL_assert((length%AES_BLOCK_SIZE) == 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						len = length / AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (AES_ENCRYPT == enc)
 | 
						if (AES_ENCRYPT == enc)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		/* XXX: Do a separate case for when in != out (strictly should
 | 
							if (in != out &&
 | 
				
			||||||
		   check for overlap, too) */
 | 
							    (UNALIGNED_MEMOPS_ARE_FAST || ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(long)==0))
 | 
				
			||||||
		while (len >= AES_BLOCK_SIZE)
 | 
					 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/*			hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
 | 
								aes_block_t *ivp = (aes_block_t *)ivec;
 | 
				
			||||||
			/*			hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
 | 
								aes_block_t *iv2p = (aes_block_t *)(ivec + AES_BLOCK_SIZE);
 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
					
 | 
				
			||||||
				out[n] = in[n] ^ iv[n];
 | 
								while (len)
 | 
				
			||||||
			/*			hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE); */
 | 
									{
 | 
				
			||||||
			AES_encrypt(out, out, key);
 | 
									aes_block_t *inp = (aes_block_t *)in;
 | 
				
			||||||
			/*			hexdump(stdout,"enc", out, AES_BLOCK_SIZE); */
 | 
									aes_block_t *outp = (aes_block_t *)out;
 | 
				
			||||||
			/*			hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE); */
 | 
					
 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
				out[n] ^= iv2[n];
 | 
										outp->data[n] = inp->data[n] ^ ivp->data[n];
 | 
				
			||||||
			/*			hexdump(stdout,"out", out, AES_BLOCK_SIZE); */
 | 
									AES_encrypt((unsigned char *)outp->data, (unsigned char *)outp->data, key);
 | 
				
			||||||
			iv = out;
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
			memcpy(prev, in, AES_BLOCK_SIZE);
 | 
										outp->data[n] ^= iv2p->data[n];
 | 
				
			||||||
			iv2 = prev;
 | 
									ivp = outp;
 | 
				
			||||||
			len -= AES_BLOCK_SIZE;
 | 
									iv2p = inp;
 | 
				
			||||||
			in += AES_BLOCK_SIZE;
 | 
									--len;
 | 
				
			||||||
			out += AES_BLOCK_SIZE;
 | 
									in += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									out += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(ivec, ivp->data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								memcpy(ivec + AES_BLOCK_SIZE, iv2p->data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								aes_block_t tmp, tmp2;
 | 
				
			||||||
 | 
								aes_block_t iv;
 | 
				
			||||||
 | 
								aes_block_t iv2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								load_block(iv, ivec);
 | 
				
			||||||
 | 
								load_block(iv2, ivec + AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								while (len)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									load_block(tmp, in);
 | 
				
			||||||
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
 | 
										tmp2.data[n] = tmp.data[n] ^ iv.data[n];
 | 
				
			||||||
 | 
									AES_encrypt((unsigned char *)tmp2.data, (unsigned char *)tmp2.data, key);
 | 
				
			||||||
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
 | 
										tmp2.data[n] ^= iv2.data[n];
 | 
				
			||||||
 | 
									store_block(out, tmp2);
 | 
				
			||||||
 | 
									iv = tmp2;
 | 
				
			||||||
 | 
									iv2 = tmp;
 | 
				
			||||||
 | 
									--len;
 | 
				
			||||||
 | 
									in += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									out += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(ivec, iv.data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								memcpy(ivec + AES_BLOCK_SIZE, iv2.data, AES_BLOCK_SIZE);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		memcpy(ivec, iv, AES_BLOCK_SIZE);
 | 
					 | 
				
			||||||
		memcpy(ivec + AES_BLOCK_SIZE, iv2, AES_BLOCK_SIZE);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		while (len >= AES_BLOCK_SIZE)
 | 
							if (in != out &&
 | 
				
			||||||
 | 
							    (UNALIGNED_MEMOPS_ARE_FAST || ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(long)==0))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			memcpy(tmp, in, AES_BLOCK_SIZE);
 | 
								aes_block_t *ivp = (aes_block_t *)ivec;
 | 
				
			||||||
			memcpy(tmp2, in, AES_BLOCK_SIZE);
 | 
								aes_block_t *iv2p = (aes_block_t *)(ivec + AES_BLOCK_SIZE);
 | 
				
			||||||
			/*			hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
 | 
					
 | 
				
			||||||
			/*			hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
 | 
								while (len)
 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
									{
 | 
				
			||||||
				tmp[n] ^= iv2[n];
 | 
									aes_block_t tmp;
 | 
				
			||||||
			/*			hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE); */
 | 
									aes_block_t *inp = (aes_block_t *)in;
 | 
				
			||||||
			AES_decrypt(tmp, out, key);
 | 
									aes_block_t *outp = (aes_block_t *)out;
 | 
				
			||||||
			/*			hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
 | 
					
 | 
				
			||||||
			/*			hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE); */
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
										tmp.data[n] = inp->data[n] ^ iv2p->data[n];
 | 
				
			||||||
				out[n] ^= ivec[n];
 | 
									AES_decrypt((unsigned char *)tmp.data, (unsigned char *)outp->data, key);
 | 
				
			||||||
			/*			hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
			memcpy(ivec, tmp2, AES_BLOCK_SIZE);
 | 
										outp->data[n] ^= ivp->data[n];
 | 
				
			||||||
			iv2 = out;
 | 
									ivp = inp;
 | 
				
			||||||
			len -= AES_BLOCK_SIZE;
 | 
									iv2p = outp;
 | 
				
			||||||
			in += AES_BLOCK_SIZE;
 | 
									--len;
 | 
				
			||||||
			out += AES_BLOCK_SIZE;
 | 
									in += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									out += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(ivec, ivp->data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								memcpy(ivec + AES_BLOCK_SIZE, iv2p->data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								aes_block_t tmp, tmp2;
 | 
				
			||||||
 | 
								aes_block_t iv;
 | 
				
			||||||
 | 
								aes_block_t iv2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								load_block(iv, ivec);
 | 
				
			||||||
 | 
								load_block(iv2, ivec + AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								while (len)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									load_block(tmp, in);
 | 
				
			||||||
 | 
									tmp2 = tmp;
 | 
				
			||||||
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
 | 
										tmp.data[n] ^= iv2.data[n];
 | 
				
			||||||
 | 
									AES_decrypt((unsigned char *)tmp.data, (unsigned char *)tmp.data, key);
 | 
				
			||||||
 | 
									for(n=0 ; n < N_WORDS; ++n)
 | 
				
			||||||
 | 
										tmp.data[n] ^= iv.data[n];
 | 
				
			||||||
 | 
									store_block(out, tmp);
 | 
				
			||||||
 | 
									iv = tmp2;
 | 
				
			||||||
 | 
									iv2 = tmp;
 | 
				
			||||||
 | 
									--len;
 | 
				
			||||||
 | 
									in += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									out += AES_BLOCK_SIZE;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(ivec, iv.data, AES_BLOCK_SIZE);
 | 
				
			||||||
 | 
								memcpy(ivec + AES_BLOCK_SIZE, iv2.data, AES_BLOCK_SIZE);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		memcpy(ivec + AES_BLOCK_SIZE, iv2, AES_BLOCK_SIZE);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -177,17 +238,11 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
		iv2 = ivec + AES_BLOCK_SIZE;
 | 
							iv2 = ivec + AES_BLOCK_SIZE;
 | 
				
			||||||
		while (len >= AES_BLOCK_SIZE)
 | 
							while (len >= AES_BLOCK_SIZE)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/*			hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				out[n] = in[n] ^ iv[n];
 | 
									out[n] = in[n] ^ iv[n];
 | 
				
			||||||
			/*			hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			AES_encrypt(out, out, key);
 | 
								AES_encrypt(out, out, key);
 | 
				
			||||||
			/*			hexdump(stdout,"enc", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				out[n] ^= iv2[n];
 | 
									out[n] ^= iv2[n];
 | 
				
			||||||
			/*			hexdump(stdout,"out", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			iv = out;
 | 
								iv = out;
 | 
				
			||||||
			memcpy(prev, in, AES_BLOCK_SIZE);
 | 
								memcpy(prev, in, AES_BLOCK_SIZE);
 | 
				
			||||||
			iv2 = prev;
 | 
								iv2 = prev;
 | 
				
			||||||
@@ -203,8 +258,6 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
		while(len >= AES_BLOCK_SIZE)
 | 
							while(len >= AES_BLOCK_SIZE)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			out -= AES_BLOCK_SIZE;
 | 
								out -= AES_BLOCK_SIZE;
 | 
				
			||||||
			/*			hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/* XXX: reduce copies by alternating between buffers */
 | 
								/* XXX: reduce copies by alternating between buffers */
 | 
				
			||||||
			memcpy(tmp, out, AES_BLOCK_SIZE);
 | 
								memcpy(tmp, out, AES_BLOCK_SIZE);
 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
@@ -235,17 +288,11 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
			out -= AES_BLOCK_SIZE;
 | 
								out -= AES_BLOCK_SIZE;
 | 
				
			||||||
			memcpy(tmp, in, AES_BLOCK_SIZE);
 | 
								memcpy(tmp, in, AES_BLOCK_SIZE);
 | 
				
			||||||
			memcpy(tmp2, in, AES_BLOCK_SIZE);
 | 
								memcpy(tmp2, in, AES_BLOCK_SIZE);
 | 
				
			||||||
			/*			hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				tmp[n] ^= iv2[n];
 | 
									tmp[n] ^= iv2[n];
 | 
				
			||||||
			/*			hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			AES_decrypt(tmp, out, key);
 | 
								AES_decrypt(tmp, out, key);
 | 
				
			||||||
			/*			hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				out[n] ^= iv[n];
 | 
									out[n] ^= iv[n];
 | 
				
			||||||
			/*			hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
 | 
								memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
 | 
				
			||||||
			iv = tmp3;
 | 
								iv = tmp3;
 | 
				
			||||||
			iv2 = out;
 | 
								iv2 = out;
 | 
				
			||||||
@@ -260,17 +307,11 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			memcpy(tmp, out, AES_BLOCK_SIZE);
 | 
								memcpy(tmp, out, AES_BLOCK_SIZE);
 | 
				
			||||||
			memcpy(tmp2, out, AES_BLOCK_SIZE);
 | 
								memcpy(tmp2, out, AES_BLOCK_SIZE);
 | 
				
			||||||
			/*			hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				tmp[n] ^= iv2[n];
 | 
									tmp[n] ^= iv2[n];
 | 
				
			||||||
			/*			hexdump(stdout, "out ^ iv2", tmp, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			AES_decrypt(tmp, out, key);
 | 
								AES_decrypt(tmp, out, key);
 | 
				
			||||||
			/*			hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			/*			hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
								for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
 | 
				
			||||||
				out[n] ^= iv[n];
 | 
									out[n] ^= iv[n];
 | 
				
			||||||
			/*			hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
 | 
					 | 
				
			||||||
			memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
 | 
								memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
 | 
				
			||||||
			iv = tmp3;
 | 
								iv = tmp3;
 | 
				
			||||||
			iv2 = out;
 | 
								iv2 = out;
 | 
				
			||||||
@@ -278,6 +319,5 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
 | 
				
			|||||||
			in += AES_BLOCK_SIZE;
 | 
								in += AES_BLOCK_SIZE;
 | 
				
			||||||
			out += AES_BLOCK_SIZE;
 | 
								out += AES_BLOCK_SIZE;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										259
									
								
								crypto/aes/aes_wrap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										259
									
								
								crypto/aes/aes_wrap.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,259 @@
 | 
				
			|||||||
 | 
					/* crypto/aes/aes_wrap.c */
 | 
				
			||||||
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 | 
					 * project.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/* ====================================================================
 | 
				
			||||||
 | 
					 * Copyright (c) 2008 The OpenSSL Project.  All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 * modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 * are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 1. Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer. 
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 2. Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer in
 | 
				
			||||||
 | 
					 *    the documentation and/or other materials provided with the
 | 
				
			||||||
 | 
					 *    distribution.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 3. All advertising materials mentioning features or use of this
 | 
				
			||||||
 | 
					 *    software must display the following acknowledgment:
 | 
				
			||||||
 | 
					 *    "This product includes software developed by the OpenSSL Project
 | 
				
			||||||
 | 
					 *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 | 
				
			||||||
 | 
					 *    endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					 *    prior written permission. For written permission, please contact
 | 
				
			||||||
 | 
					 *    licensing@OpenSSL.org.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 5. Products derived from this software may not be called "OpenSSL"
 | 
				
			||||||
 | 
					 *    nor may "OpenSSL" appear in their names without prior written
 | 
				
			||||||
 | 
					 *    permission of the OpenSSL Project.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 6. Redistributions of any form whatsoever must retain the following
 | 
				
			||||||
 | 
					 *    acknowledgment:
 | 
				
			||||||
 | 
					 *    "This product includes software developed by the OpenSSL Project
 | 
				
			||||||
 | 
					 *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 | 
				
			||||||
 | 
					 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
				
			||||||
 | 
					 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 | 
				
			||||||
 | 
					 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
				
			||||||
 | 
					 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | 
				
			||||||
 | 
					 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
				
			||||||
 | 
					 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 | 
				
			||||||
 | 
					 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 | 
				
			||||||
 | 
					 * OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 * ====================================================================
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "cryptlib.h"
 | 
				
			||||||
 | 
					#include <openssl/aes.h>
 | 
				
			||||||
 | 
					#include <openssl/bio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char default_iv[] = {
 | 
				
			||||||
 | 
					  0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			||||||
 | 
							unsigned char *out,
 | 
				
			||||||
 | 
							const unsigned char *in, unsigned int inlen)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						unsigned char *A, B[16], *R;
 | 
				
			||||||
 | 
						unsigned int i, j, t;
 | 
				
			||||||
 | 
						if ((inlen & 0x7) || (inlen < 8))
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						A = B;
 | 
				
			||||||
 | 
						t = 1;
 | 
				
			||||||
 | 
						memcpy(out + 8, in, inlen);
 | 
				
			||||||
 | 
						if (!iv)
 | 
				
			||||||
 | 
							iv = default_iv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memcpy(A, iv, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (j = 0; j < 6; j++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							R = out + 8;
 | 
				
			||||||
 | 
							for (i = 0; i < inlen; i += 8, t++, R += 8)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								memcpy(B + 8, R, 8);
 | 
				
			||||||
 | 
								AES_encrypt(B, B, key);
 | 
				
			||||||
 | 
								A[7] ^= (unsigned char)(t & 0xff);
 | 
				
			||||||
 | 
								if (t > 0xff)	
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									A[6] ^= (unsigned char)((t & 0xff) >> 8);
 | 
				
			||||||
 | 
									A[5] ^= (unsigned char)((t & 0xff) >> 16);
 | 
				
			||||||
 | 
									A[4] ^= (unsigned char)((t & 0xff) >> 24);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(R, B + 8, 8);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						memcpy(out, A, 8);
 | 
				
			||||||
 | 
						return inlen + 8;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			||||||
 | 
							unsigned char *out,
 | 
				
			||||||
 | 
							const unsigned char *in, unsigned int inlen)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						unsigned char *A, B[16], *R;
 | 
				
			||||||
 | 
						unsigned int i, j, t;
 | 
				
			||||||
 | 
						inlen -= 8;
 | 
				
			||||||
 | 
						if (inlen & 0x7)
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						if (inlen < 8)
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						A = B;
 | 
				
			||||||
 | 
						t =  6 * (inlen >> 3);
 | 
				
			||||||
 | 
						memcpy(A, in, 8);
 | 
				
			||||||
 | 
						memcpy(out, in + 8, inlen);
 | 
				
			||||||
 | 
						for (j = 0; j < 6; j++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							R = out + inlen - 8;
 | 
				
			||||||
 | 
							for (i = 0; i < inlen; i += 8, t--, R -= 8)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								A[7] ^= (unsigned char)(t & 0xff);
 | 
				
			||||||
 | 
								if (t > 0xff)	
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									A[6] ^= (unsigned char)((t & 0xff) >> 8);
 | 
				
			||||||
 | 
									A[5] ^= (unsigned char)((t & 0xff) >> 16);
 | 
				
			||||||
 | 
									A[4] ^= (unsigned char)((t & 0xff) >> 24);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								memcpy(B + 8, R, 8);
 | 
				
			||||||
 | 
								AES_decrypt(B, B, key);
 | 
				
			||||||
 | 
								memcpy(R, B + 8, 8);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (!iv)
 | 
				
			||||||
 | 
							iv = default_iv;
 | 
				
			||||||
 | 
						if (memcmp(A, iv, 8))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							OPENSSL_cleanse(out, inlen);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						return inlen;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef AES_WRAP_TEST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int AES_wrap_unwrap_test(const unsigned char *kek, int keybits,
 | 
				
			||||||
 | 
								 const unsigned char *iv,
 | 
				
			||||||
 | 
								 const unsigned char *eout,
 | 
				
			||||||
 | 
								 const unsigned char *key, int keylen)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						unsigned char *otmp = NULL, *ptmp = NULL;
 | 
				
			||||||
 | 
						int r, ret = 0;
 | 
				
			||||||
 | 
						AES_KEY wctx;
 | 
				
			||||||
 | 
						otmp = OPENSSL_malloc(keylen + 8);
 | 
				
			||||||
 | 
						ptmp = OPENSSL_malloc(keylen);
 | 
				
			||||||
 | 
						if (!otmp || !ptmp)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						if (AES_set_encrypt_key(kek, keybits, &wctx))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						r = AES_wrap_key(&wctx, iv, otmp, key, keylen);
 | 
				
			||||||
 | 
						if (r <= 0)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (eout && memcmp(eout, otmp, keylen))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						if (AES_set_decrypt_key(kek, keybits, &wctx))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
						r = AES_unwrap_key(&wctx, iv, ptmp, otmp, r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (memcmp(key, ptmp, keylen))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err:
 | 
				
			||||||
 | 
						if (otmp)
 | 
				
			||||||
 | 
							OPENSSL_free(otmp);
 | 
				
			||||||
 | 
						if (ptmp)
 | 
				
			||||||
 | 
							OPENSSL_free(ptmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char kek[] = {
 | 
				
			||||||
 | 
					  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 | 
				
			||||||
 | 
					  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
 | 
				
			||||||
 | 
					  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
 | 
				
			||||||
 | 
					  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char key[] = {
 | 
				
			||||||
 | 
					  0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
 | 
				
			||||||
 | 
					  0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
 | 
				
			||||||
 | 
					  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 | 
				
			||||||
 | 
					  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e1[] = {
 | 
				
			||||||
 | 
					  0x1f, 0xa6, 0x8b, 0x0a, 0x81, 0x12, 0xb4, 0x47,
 | 
				
			||||||
 | 
					  0xae, 0xf3, 0x4b, 0xd8, 0xfb, 0x5a, 0x7b, 0x82,
 | 
				
			||||||
 | 
					  0x9d, 0x3e, 0x86, 0x23, 0x71, 0xd2, 0xcf, 0xe5
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e2[] = {
 | 
				
			||||||
 | 
					  0x96, 0x77, 0x8b, 0x25, 0xae, 0x6c, 0xa4, 0x35,
 | 
				
			||||||
 | 
					  0xf9, 0x2b, 0x5b, 0x97, 0xc0, 0x50, 0xae, 0xd2,
 | 
				
			||||||
 | 
					  0x46, 0x8a, 0xb8, 0xa1, 0x7a, 0xd8, 0x4e, 0x5d
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e3[] = {
 | 
				
			||||||
 | 
					  0x64, 0xe8, 0xc3, 0xf9, 0xce, 0x0f, 0x5b, 0xa2,
 | 
				
			||||||
 | 
					  0x63, 0xe9, 0x77, 0x79, 0x05, 0x81, 0x8a, 0x2a,
 | 
				
			||||||
 | 
					  0x93, 0xc8, 0x19, 0x1e, 0x7d, 0x6e, 0x8a, 0xe7
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e4[] = {
 | 
				
			||||||
 | 
					  0x03, 0x1d, 0x33, 0x26, 0x4e, 0x15, 0xd3, 0x32,
 | 
				
			||||||
 | 
					  0x68, 0xf2, 0x4e, 0xc2, 0x60, 0x74, 0x3e, 0xdc,
 | 
				
			||||||
 | 
					  0xe1, 0xc6, 0xc7, 0xdd, 0xee, 0x72, 0x5a, 0x93,
 | 
				
			||||||
 | 
					  0x6b, 0xa8, 0x14, 0x91, 0x5c, 0x67, 0x62, 0xd2
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e5[] = {
 | 
				
			||||||
 | 
					  0xa8, 0xf9, 0xbc, 0x16, 0x12, 0xc6, 0x8b, 0x3f,
 | 
				
			||||||
 | 
					  0xf6, 0xe6, 0xf4, 0xfb, 0xe3, 0x0e, 0x71, 0xe4,
 | 
				
			||||||
 | 
					  0x76, 0x9c, 0x8b, 0x80, 0xa3, 0x2c, 0xb8, 0x95,
 | 
				
			||||||
 | 
					  0x8c, 0xd5, 0xd1, 0x7d, 0x6b, 0x25, 0x4d, 0xa1
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char e6[] = {
 | 
				
			||||||
 | 
					  0x28, 0xc9, 0xf4, 0x04, 0xc4, 0xb8, 0x10, 0xf4,
 | 
				
			||||||
 | 
					  0xcb, 0xcc, 0xb3, 0x5c, 0xfb, 0x87, 0xf8, 0x26,
 | 
				
			||||||
 | 
					  0x3f, 0x57, 0x86, 0xe2, 0xd8, 0x0e, 0xd3, 0x26,
 | 
				
			||||||
 | 
					  0xcb, 0xc7, 0xf0, 0xe7, 0x1a, 0x99, 0xf4, 0x3b,
 | 
				
			||||||
 | 
					  0xfb, 0x98, 0x8b, 0x9b, 0x7a, 0x02, 0xdd, 0x21
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						AES_KEY wctx, xctx;
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 128, NULL, e1, key, 16);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 192, NULL, e2, key, 16);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 256, NULL, e3, key, 16);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 192, NULL, e4, key, 24);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 256, NULL, e5, key, 24);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
						ret = AES_wrap_unwrap_test(kek, 256, NULL, e6, key, 32);
 | 
				
			||||||
 | 
						fprintf(stderr, "Key test result %d\n", ret);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -512,11 +512,11 @@ sub declast()
 | 
				
			|||||||
	if($i==3)   {	&mov	($key,&DWP(12,"esp"));		}
 | 
						if($i==3)   {	&mov	($key,&DWP(12,"esp"));		}
 | 
				
			||||||
	else        {	&mov	($out,$s[0]);			}
 | 
						else        {	&mov	($out,$s[0]);			}
 | 
				
			||||||
			&and	($out,0xFF);
 | 
								&and	($out,0xFF);
 | 
				
			||||||
			&movz	($out,&DWP(2048,$td,$out,1));
 | 
								&movz	($out,&BP(2048,$td,$out,1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($i==3)  {	$tmp=$s[1];				}
 | 
						if ($i==3)  {	$tmp=$s[1];				}
 | 
				
			||||||
			&movz	($tmp,&HB($s[1]));
 | 
								&movz	($tmp,&HB($s[1]));
 | 
				
			||||||
			&movz	($tmp,&DWP(2048,$td,$tmp,1));
 | 
								&movz	($tmp,&BP(2048,$td,$tmp,1));
 | 
				
			||||||
			&shl	($tmp,8);
 | 
								&shl	($tmp,8);
 | 
				
			||||||
			&xor	($out,$tmp);
 | 
								&xor	($out,$tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -524,14 +524,14 @@ sub declast()
 | 
				
			|||||||
	else        {	mov	($tmp,$s[2]);			}
 | 
						else        {	mov	($tmp,$s[2]);			}
 | 
				
			||||||
			&shr	($tmp,16);
 | 
								&shr	($tmp,16);
 | 
				
			||||||
			&and	($tmp,0xFF);
 | 
								&and	($tmp,0xFF);
 | 
				
			||||||
			&movz	($tmp,&DWP(2048,$td,$tmp,1));
 | 
								&movz	($tmp,&BP(2048,$td,$tmp,1));
 | 
				
			||||||
			&shl	($tmp,16);
 | 
								&shl	($tmp,16);
 | 
				
			||||||
			&xor	($out,$tmp);
 | 
								&xor	($out,$tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($i==3)  {	$tmp=$s[3]; &mov ($s[2],&DWP(8,"esp"));	}
 | 
						if ($i==3)  {	$tmp=$s[3]; &mov ($s[2],&DWP(8,"esp"));	}
 | 
				
			||||||
	else        {	&mov	($tmp,$s[3]);			}
 | 
						else        {	&mov	($tmp,$s[3]);			}
 | 
				
			||||||
			&shr	($tmp,24);
 | 
								&shr	($tmp,24);
 | 
				
			||||||
			&movz	($tmp,&DWP(2048,$td,$tmp,1));
 | 
								&movz	($tmp,&BP(2048,$td,$tmp,1));
 | 
				
			||||||
			&shl	($tmp,24);
 | 
								&shl	($tmp,24);
 | 
				
			||||||
			&xor	($out,$tmp);
 | 
								&xor	($out,$tmp);
 | 
				
			||||||
	if ($i<2)   {	&mov	(&DWP(4+4*$i,"esp"),$out);	}
 | 
						if ($i<2)   {	&mov	(&DWP(4+4*$i,"esp"),$out);	}
 | 
				
			||||||
@@ -940,7 +940,6 @@ my $mark=&DWP(60+240,"esp");	#copy of aes_key->rounds
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	&cmp	($mark,0);		# was the key schedule copied?
 | 
						&cmp	($mark,0);		# was the key schedule copied?
 | 
				
			||||||
	&mov	("edi",$_key);
 | 
						&mov	("edi",$_key);
 | 
				
			||||||
	&mov	("esp",$_esp);
 | 
					 | 
				
			||||||
	&je	(&label("skip_ezero"));
 | 
						&je	(&label("skip_ezero"));
 | 
				
			||||||
	# zero copy of key schedule
 | 
						# zero copy of key schedule
 | 
				
			||||||
	&mov	("ecx",240/4);
 | 
						&mov	("ecx",240/4);
 | 
				
			||||||
@@ -948,6 +947,7 @@ my $mark=&DWP(60+240,"esp");	#copy of aes_key->rounds
 | 
				
			|||||||
	&align	(4);
 | 
						&align	(4);
 | 
				
			||||||
	&data_word(0xABF3F689);	# rep stosd
 | 
						&data_word(0xABF3F689);	# rep stosd
 | 
				
			||||||
	&set_label("skip_ezero")
 | 
						&set_label("skip_ezero")
 | 
				
			||||||
 | 
						&mov	("esp",$_esp);
 | 
				
			||||||
	&popf	();
 | 
						&popf	();
 | 
				
			||||||
    &set_label("enc_out");
 | 
					    &set_label("enc_out");
 | 
				
			||||||
	&function_end_A();
 | 
						&function_end_A();
 | 
				
			||||||
@@ -955,8 +955,9 @@ my $mark=&DWP(60+240,"esp");	#copy of aes_key->rounds
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    &align	(4);
 | 
					    &align	(4);
 | 
				
			||||||
    &set_label("enc_tail");
 | 
					    &set_label("enc_tail");
 | 
				
			||||||
	&push	($key eq "edi" ? $key : "");	# push ivp
 | 
						&mov	($s0,$key eq "edi" ? $key : "");
 | 
				
			||||||
	&mov	($key,$_out);			# load out
 | 
						&mov	($key,$_out);			# load out
 | 
				
			||||||
 | 
						&push	($s0);				# push ivp
 | 
				
			||||||
	&mov	($s1,16);
 | 
						&mov	($s1,16);
 | 
				
			||||||
	&sub	($s1,$s2);
 | 
						&sub	($s1,$s2);
 | 
				
			||||||
	&cmp	($key,$acc);			# compare with inp
 | 
						&cmp	($key,$acc);			# compare with inp
 | 
				
			||||||
@@ -1197,7 +1198,6 @@ my $mark=&DWP(60+240,"esp");	#copy of aes_key->rounds
 | 
				
			|||||||
    &set_label("dec_out");
 | 
					    &set_label("dec_out");
 | 
				
			||||||
    &cmp	($mark,0);		# was the key schedule copied?
 | 
					    &cmp	($mark,0);		# was the key schedule copied?
 | 
				
			||||||
    &mov	("edi",$_key);
 | 
					    &mov	("edi",$_key);
 | 
				
			||||||
    &mov	("esp",$_esp);
 | 
					 | 
				
			||||||
    &je		(&label("skip_dzero"));
 | 
					    &je		(&label("skip_dzero"));
 | 
				
			||||||
    # zero copy of key schedule
 | 
					    # zero copy of key schedule
 | 
				
			||||||
    &mov	("ecx",240/4);
 | 
					    &mov	("ecx",240/4);
 | 
				
			||||||
@@ -1205,6 +1205,7 @@ my $mark=&DWP(60+240,"esp");	#copy of aes_key->rounds
 | 
				
			|||||||
    &align	(4);
 | 
					    &align	(4);
 | 
				
			||||||
    &data_word(0xABF3F689);	# rep stosd
 | 
					    &data_word(0xABF3F689);	# rep stosd
 | 
				
			||||||
    &set_label("skip_dzero")
 | 
					    &set_label("skip_dzero")
 | 
				
			||||||
 | 
					    &mov	("esp",$_esp);
 | 
				
			||||||
    &popf	();
 | 
					    &popf	();
 | 
				
			||||||
&function_end("AES_cbc_encrypt");
 | 
					&function_end("AES_cbc_encrypt");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1071
									
								
								crypto/aes/asm/aes-s390x.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1071
									
								
								crypto/aes/asm/aes-s390x.pl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1579
									
								
								crypto/aes/asm/aes-x86_64.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1579
									
								
								crypto/aes/asm/aes-x86_64.pl
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -26,7 +26,7 @@ LIBSRC=	a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
 | 
				
			|||||||
	t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
 | 
						t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
 | 
				
			||||||
	tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
 | 
						tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
 | 
				
			||||||
	f_int.c f_string.c n_pkey.c \
 | 
						f_int.c f_string.c n_pkey.c \
 | 
				
			||||||
	f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c \
 | 
						f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c asn_mime.c \
 | 
				
			||||||
	asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \
 | 
						asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \
 | 
				
			||||||
	evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
 | 
						evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
 | 
				
			||||||
LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
 | 
					LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
 | 
				
			||||||
@@ -38,7 +38,7 @@ LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
 | 
				
			|||||||
	t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
 | 
						t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
 | 
				
			||||||
	tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
 | 
						tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
 | 
				
			||||||
	f_int.o f_string.o n_pkey.o \
 | 
						f_int.o f_string.o n_pkey.o \
 | 
				
			||||||
	f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o \
 | 
						f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o asn_mime.o \
 | 
				
			||||||
	asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \
 | 
						asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \
 | 
				
			||||||
	evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
 | 
						evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,7 +63,7 @@ pk:	pk.c
 | 
				
			|||||||
all:	lib
 | 
					all:	lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lib:	$(LIBOBJ)
 | 
					lib:	$(LIBOBJ)
 | 
				
			||||||
	$(AR) $(LIB) $(LIBOBJ)
 | 
						$(ARX) $(LIB) $(LIBOBJ)
 | 
				
			||||||
	$(RANLIB) $(LIB) || echo Never mind.
 | 
						$(RANLIB) $(LIB) || echo Never mind.
 | 
				
			||||||
	@touch lib
 | 
						@touch lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -142,9 +142,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			|||||||
a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/opensslconf.h
 | 
					a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
@@ -250,27 +250,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			|||||||
a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
a_sign.o: ../cryptlib.h a_sign.c
 | 
					a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c
 | 
				
			||||||
a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
a_strex.o: ../cryptlib.h a_strex.c charmap.h
 | 
					a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h
 | 
				
			||||||
a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
@@ -317,8 +317,9 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			|||||||
a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
 | 
					a_verify.o: ../../include/openssl/opensslconf.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
@@ -337,8 +338,9 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			|||||||
asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
 | 
					asn1_gen.o: ../../include/openssl/opensslconf.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
@@ -368,9 +370,9 @@ asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			|||||||
asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
 | 
					asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/opensslconf.h
 | 
					asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
@@ -389,23 +391,23 @@ d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			|||||||
d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
					d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
 | 
				
			||||||
d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 | 
				
			||||||
d2i_pr.o: ../cryptlib.h d2i_pr.c
 | 
					d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c
 | 
				
			||||||
d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
					d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
 | 
				
			||||||
d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 | 
				
			||||||
d2i_pu.o: ../cryptlib.h d2i_pu.c
 | 
					d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c
 | 
				
			||||||
evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
 | 
					evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
 | 
				
			||||||
evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
@@ -441,71 +443,73 @@ i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			|||||||
i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
					i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
 | 
				
			||||||
i2d_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 | 
				
			||||||
i2d_pr.o: ../cryptlib.h i2d_pr.c
 | 
					i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c
 | 
				
			||||||
i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
					i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
 | 
				
			||||||
i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 | 
				
			||||||
i2d_pu.o: ../cryptlib.h i2d_pu.c
 | 
					i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c
 | 
				
			||||||
n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
 | 
					n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c
 | 
					n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					n_pkey.o: ../cryptlib.h n_pkey.c
 | 
				
			||||||
nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
					nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
					nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c
 | 
					nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c
 | 
				
			||||||
p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
 | 
					p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
p5_pbe.o: ../cryptlib.h p5_pbe.c
 | 
					p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c
 | 
				
			||||||
p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
 | 
					p5_pbev2.o: ../../include/openssl/opensslconf.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
 | 
					p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
 | 
				
			||||||
p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
@@ -518,41 +522,42 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			|||||||
p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c
 | 
					p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					p8_pkey.o: ../cryptlib.h p8_pkey.c
 | 
				
			||||||
t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
					t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 | 
					t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
t_bitst.o: ../cryptlib.h t_bitst.c
 | 
					t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c
 | 
				
			||||||
t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
					t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 | 
					t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
t_crl.o: ../cryptlib.h t_crl.c
 | 
					t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c
 | 
				
			||||||
t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
 | 
					t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
 | 
				
			||||||
@@ -570,57 +575,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			|||||||
t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
					t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
				
			||||||
t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
				
			||||||
t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 | 
					t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
t_req.o: ../cryptlib.h t_req.c
 | 
					t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c
 | 
				
			||||||
t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
					t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
					t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
t_spki.o: ../cryptlib.h t_spki.c
 | 
					t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c
 | 
				
			||||||
t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
					t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
					t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 | 
					t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 | 
					t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
t_x509.o: ../cryptlib.h t_x509.c
 | 
					t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c
 | 
				
			||||||
t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
t_x509a.o: ../cryptlib.h t_x509a.c
 | 
					t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c
 | 
				
			||||||
tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
					tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
				
			||||||
tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
@@ -673,21 +678,23 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			|||||||
x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
					x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c
 | 
					x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_algor.o: x_algor.c
 | 
				
			||||||
x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
 | 
					x_attrib.o: ../../include/openssl/opensslconf.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
@@ -708,37 +715,40 @@ x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			|||||||
x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c
 | 
					x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_crl.o: ../cryptlib.h x_crl.c
 | 
				
			||||||
x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
					x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
					x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
					x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c
 | 
					x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_exten.o: x_exten.c
 | 
				
			||||||
x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
					x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 | 
				
			||||||
x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c
 | 
					x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_info.o: ../cryptlib.h x_info.c
 | 
				
			||||||
x_long.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_long.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
					x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 | 
				
			||||||
@@ -754,35 +764,37 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			|||||||
x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c
 | 
					x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_name.o: ../cryptlib.h x_name.c
 | 
				
			||||||
x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
 | 
					x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c
 | 
					x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_pkey.o: ../cryptlib.h x_pkey.c
 | 
				
			||||||
x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
					x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/opensslconf.h
 | 
					x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
					x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
 | 
				
			||||||
x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
@@ -795,76 +807,82 @@ x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			|||||||
x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c
 | 
					x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_req.o: ../cryptlib.h x_req.c
 | 
				
			||||||
x_sig.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_sig.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c
 | 
					x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_sig.o: ../cryptlib.h x_sig.c
 | 
				
			||||||
x_spki.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_spki.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c
 | 
					x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_spki.o: ../cryptlib.h x_spki.c
 | 
				
			||||||
x_val.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_val.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c
 | 
					x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_val.o: ../cryptlib.h x_val.c
 | 
				
			||||||
x_x509.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_x509.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
 | 
					x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
					x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
					x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
					x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
 | 
					x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
					x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
					x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
					x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
					x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
					x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
					x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
				
			||||||
x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c
 | 
					x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 | 
				
			||||||
 | 
					x_x509.o: ../cryptlib.h x_x509.c
 | 
				
			||||||
x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
					x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
					x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
					x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
					x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
					x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
					x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
 | 
					x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 | 
					x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 | 
					x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
 | 
					x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 | 
					x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 | 
					x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 | 
				
			||||||
x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c
 | 
					x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 | 
				
			||||||
 | 
					x_x509a.o: ../cryptlib.h x_x509a.c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,6 +62,7 @@
 | 
				
			|||||||
#include <openssl/buffer.h>
 | 
					#include <openssl/buffer.h>
 | 
				
			||||||
#include <openssl/asn1.h>
 | 
					#include <openssl/asn1.h>
 | 
				
			||||||
#include <openssl/objects.h>
 | 
					#include <openssl/objects.h>
 | 
				
			||||||
 | 
					#include <openssl/bn.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp)
 | 
					int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,6 +59,7 @@
 | 
				
			|||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "cryptlib.h"
 | 
					#include "cryptlib.h"
 | 
				
			||||||
#include <openssl/asn1t.h>
 | 
					#include <openssl/asn1t.h>
 | 
				
			||||||
 | 
					#include <openssl/objects.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ASN1_TYPE_get(ASN1_TYPE *a)
 | 
					int ASN1_TYPE_get(ASN1_TYPE *a)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -79,6 +80,31 @@ void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value)
 | 
				
			|||||||
	a->value.ptr=value;
 | 
						a->value.ptr=value;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						if (!value || (type == V_ASN1_BOOLEAN))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							void *p = (void *)value;
 | 
				
			||||||
 | 
							ASN1_TYPE_set(a, type, p);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else if (type == V_ASN1_OBJECT)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ASN1_OBJECT *odup;
 | 
				
			||||||
 | 
							odup = OBJ_dup(value);
 | 
				
			||||||
 | 
							if (!odup)
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							ASN1_TYPE_set(a, type, odup);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ASN1_STRING *sdup;
 | 
				
			||||||
 | 
							sdup = ASN1_STRING_dup((ASN1_STRING *)value);
 | 
				
			||||||
 | 
							if (!sdup)
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							ASN1_TYPE_set(a, type, sdup);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_STACK_OF(ASN1_TYPE)
 | 
					IMPLEMENT_STACK_OF(ASN1_TYPE)
 | 
				
			||||||
IMPLEMENT_ASN1_SET_OF(ASN1_TYPE)
 | 
					IMPLEMENT_ASN1_SET_OF(ASN1_TYPE)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -158,7 +158,12 @@ extern "C" {
 | 
				
			|||||||
#define MBSTRING_BMP		(MBSTRING_FLAG|2)
 | 
					#define MBSTRING_BMP		(MBSTRING_FLAG|2)
 | 
				
			||||||
#define MBSTRING_UNIV		(MBSTRING_FLAG|4)
 | 
					#define MBSTRING_UNIV		(MBSTRING_FLAG|4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SMIME_OLDMIME		0x400
 | 
				
			||||||
 | 
					#define SMIME_CRLFEOL		0x800
 | 
				
			||||||
 | 
					#define SMIME_STREAM		0x1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct X509_algor_st;
 | 
					struct X509_algor_st;
 | 
				
			||||||
 | 
					DECLARE_STACK_OF(X509_ALGOR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */
 | 
					#define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */
 | 
				
			||||||
#define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */
 | 
					#define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */
 | 
				
			||||||
@@ -218,6 +223,13 @@ typedef struct asn1_object_st
 | 
				
			|||||||
 * be inserted in the memory buffer 
 | 
					 * be inserted in the memory buffer 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define ASN1_STRING_FLAG_NDEF 0x010 
 | 
					#define ASN1_STRING_FLAG_NDEF 0x010 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This flag is used by the CMS code to indicate that a string is not
 | 
				
			||||||
 | 
					 * complete and is a place holder for content when it had all been 
 | 
				
			||||||
 | 
					 * accessed. The flag will be reset when content has been written to it.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define ASN1_STRING_FLAG_CONT 0x020 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is the base type that holds just about everything :-) */
 | 
					/* This is the base type that holds just about everything :-) */
 | 
				
			||||||
typedef struct asn1_string_st
 | 
					typedef struct asn1_string_st
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -311,8 +323,8 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
 | 
				
			|||||||
	int i2d_##name##_NDEF(name *a, unsigned char **out);
 | 
						int i2d_##name##_NDEF(name *a, unsigned char **out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DECLARE_ASN1_FUNCTIONS_const(name) \
 | 
					#define DECLARE_ASN1_FUNCTIONS_const(name) \
 | 
				
			||||||
	name *name##_new(void); \
 | 
						DECLARE_ASN1_ALLOC_FUNCTIONS(name) \
 | 
				
			||||||
	void name##_free(name *a);
 | 
						DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
 | 
					#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
 | 
				
			||||||
	type *name##_new(void); \
 | 
						type *name##_new(void); \
 | 
				
			||||||
@@ -322,6 +334,17 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
 | 
				
			|||||||
#define I2D_OF(type) int (*)(type *,unsigned char **)
 | 
					#define I2D_OF(type) int (*)(type *,unsigned char **)
 | 
				
			||||||
#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
 | 
					#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CHECKED_D2I_OF(type, d2i) \
 | 
				
			||||||
 | 
					    ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
 | 
				
			||||||
 | 
					#define CHECKED_I2D_OF(type, i2d) \
 | 
				
			||||||
 | 
					    ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
 | 
				
			||||||
 | 
					#define CHECKED_NEW_OF(type, xnew) \
 | 
				
			||||||
 | 
					    ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
 | 
				
			||||||
 | 
					#define CHECKED_PTR_OF(type, p) \
 | 
				
			||||||
 | 
					    ((void*) (1 ? p : (type*)0))
 | 
				
			||||||
 | 
					#define CHECKED_PPTR_OF(type, p) \
 | 
				
			||||||
 | 
					    ((void**) (1 ? p : (type**)0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
 | 
					#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
 | 
				
			||||||
#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
 | 
					#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
 | 
				
			||||||
#define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
 | 
					#define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
 | 
				
			||||||
@@ -511,6 +534,7 @@ typedef struct asn1_type_st
 | 
				
			|||||||
		 * contain the set or sequence bytes */
 | 
							 * contain the set or sequence bytes */
 | 
				
			||||||
		ASN1_STRING *		set;
 | 
							ASN1_STRING *		set;
 | 
				
			||||||
		ASN1_STRING *		sequence;
 | 
							ASN1_STRING *		sequence;
 | 
				
			||||||
 | 
							ASN1_VALUE  *		asn1_value;
 | 
				
			||||||
		} value;
 | 
							} value;
 | 
				
			||||||
	} ASN1_TYPE;
 | 
						} ASN1_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -741,6 +765,7 @@ DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int ASN1_TYPE_get(ASN1_TYPE *a);
 | 
					int ASN1_TYPE_get(ASN1_TYPE *a);
 | 
				
			||||||
void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
 | 
					void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
 | 
				
			||||||
 | 
					int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASN1_OBJECT *	ASN1_OBJECT_new(void );
 | 
					ASN1_OBJECT *	ASN1_OBJECT_new(void );
 | 
				
			||||||
void		ASN1_OBJECT_free(ASN1_OBJECT *a);
 | 
					void		ASN1_OBJECT_free(ASN1_OBJECT *a);
 | 
				
			||||||
@@ -763,6 +788,7 @@ int 		ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);
 | 
				
			|||||||
  /* Since this is used to store all sorts of things, via macros, for now, make
 | 
					  /* Since this is used to store all sorts of things, via macros, for now, make
 | 
				
			||||||
     its data void * */
 | 
					     its data void * */
 | 
				
			||||||
int 		ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
 | 
					int 		ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
 | 
				
			||||||
 | 
					void		ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
 | 
				
			||||||
int ASN1_STRING_length(ASN1_STRING *x);
 | 
					int ASN1_STRING_length(ASN1_STRING *x);
 | 
				
			||||||
void ASN1_STRING_length_set(ASN1_STRING *x, int n);
 | 
					void ASN1_STRING_length_set(ASN1_STRING *x, int n);
 | 
				
			||||||
int ASN1_STRING_type(ASN1_STRING *x);
 | 
					int ASN1_STRING_type(ASN1_STRING *x);
 | 
				
			||||||
@@ -902,23 +928,47 @@ int ASN1_object_size(int constructed, int length, int tag);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Used to implement other functions */
 | 
					/* Used to implement other functions */
 | 
				
			||||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
 | 
					void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_dup_of(type,i2d,d2i,x) \
 | 
					#define ASN1_dup_of(type,i2d,d2i,x) \
 | 
				
			||||||
	((type *(*)(I2D_OF(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x)
 | 
					    ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
 | 
				
			||||||
 | 
							     CHECKED_D2I_OF(type, d2i), \
 | 
				
			||||||
 | 
							     CHECKED_PTR_OF(type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_dup_of_const(type,i2d,d2i,x) \
 | 
					#define ASN1_dup_of_const(type,i2d,d2i,x) \
 | 
				
			||||||
	((type *(*)(I2D_OF_const(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x)
 | 
					    ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \
 | 
				
			||||||
 | 
							     CHECKED_D2I_OF(type, d2i), \
 | 
				
			||||||
 | 
							     CHECKED_PTR_OF(const type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
 | 
					void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ASN1 alloc/free macros for when a type is only used internally */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type))
 | 
				
			||||||
 | 
					#define M_ASN1_free_of(x, type) \
 | 
				
			||||||
 | 
							ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_FP_API
 | 
					#ifndef OPENSSL_NO_FP_API
 | 
				
			||||||
void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x);
 | 
					void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
 | 
					#define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
 | 
				
			||||||
	((type *(*)(type *(*)(void),D2I_OF(type),FILE *,type **))openssl_fcast(ASN1_d2i_fp))(xnew,d2i,in,x)
 | 
					    ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
 | 
				
			||||||
 | 
								CHECKED_D2I_OF(type, d2i), \
 | 
				
			||||||
 | 
								in, \
 | 
				
			||||||
 | 
								CHECKED_PPTR_OF(type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
 | 
					void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
 | 
				
			||||||
int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,void *x);
 | 
					int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,void *x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_i2d_fp_of(type,i2d,out,x) \
 | 
					#define ASN1_i2d_fp_of(type,i2d,out,x) \
 | 
				
			||||||
	((int (*)(I2D_OF(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x)
 | 
					    (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
 | 
				
			||||||
 | 
							 out, \
 | 
				
			||||||
 | 
							 CHECKED_PTR_OF(type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_i2d_fp_of_const(type,i2d,out,x) \
 | 
					#define ASN1_i2d_fp_of_const(type,i2d,out,x) \
 | 
				
			||||||
	((int (*)(I2D_OF_const(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x)
 | 
					    (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \
 | 
				
			||||||
 | 
							 out, \
 | 
				
			||||||
 | 
							 CHECKED_PTR_OF(const type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
 | 
					int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
 | 
				
			||||||
int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
 | 
					int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -927,14 +977,26 @@ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_BIO
 | 
					#ifndef OPENSSL_NO_BIO
 | 
				
			||||||
void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x);
 | 
					void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
 | 
					#define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
 | 
				
			||||||
	((type *(*)(type *(*)(void),D2I_OF(type),BIO *,type **))openssl_fcast(ASN1_d2i_bio))(xnew,d2i,in,x)
 | 
					    ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
 | 
				
			||||||
 | 
								  CHECKED_D2I_OF(type, d2i), \
 | 
				
			||||||
 | 
								  in, \
 | 
				
			||||||
 | 
								  CHECKED_PPTR_OF(type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
 | 
					void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
 | 
				
			||||||
int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x);
 | 
					int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_i2d_bio_of(type,i2d,out,x) \
 | 
					#define ASN1_i2d_bio_of(type,i2d,out,x) \
 | 
				
			||||||
	((int (*)(I2D_OF(type),BIO *,type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x)
 | 
					    (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
 | 
				
			||||||
 | 
							  out, \
 | 
				
			||||||
 | 
							  CHECKED_PTR_OF(type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_i2d_bio_of_const(type,i2d,out,x) \
 | 
					#define ASN1_i2d_bio_of_const(type,i2d,out,x) \
 | 
				
			||||||
	((int (*)(I2D_OF_const(type),BIO *,const type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x)
 | 
					    (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \
 | 
				
			||||||
 | 
							  out, \
 | 
				
			||||||
 | 
							  CHECKED_PTR_OF(const type, x)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
 | 
					int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
 | 
				
			||||||
int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a);
 | 
					int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a);
 | 
				
			||||||
int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a);
 | 
					int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a);
 | 
				
			||||||
@@ -977,8 +1039,12 @@ void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
 | 
				
			|||||||
void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
 | 
					void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
 | 
				
			||||||
ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
 | 
					ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
 | 
				
			||||||
			      ASN1_OCTET_STRING **oct);
 | 
								      ASN1_OCTET_STRING **oct);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_pack_string_of(type,obj,i2d,oct) \
 | 
					#define ASN1_pack_string_of(type,obj,i2d,oct) \
 | 
				
			||||||
	((ASN1_STRING *(*)(type *,I2D_OF(type),ASN1_OCTET_STRING **))openssl_fcast(ASN1_pack_string))(obj,i2d,oct)
 | 
					    (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
 | 
				
			||||||
 | 
							      CHECKED_I2D_OF(type, i2d), \
 | 
				
			||||||
 | 
							      oct))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
 | 
					ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ASN1_STRING_set_default_mask(unsigned long mask);
 | 
					void ASN1_STRING_set_default_mask(unsigned long mask);
 | 
				
			||||||
@@ -1009,7 +1075,17 @@ void ASN1_add_oid_module(void);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
 | 
					ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
 | 
				
			||||||
ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
 | 
					ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
 | 
					typedef int asn1_output_data_fn(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
 | 
				
			||||||
 | 
										const ASN1_ITEM *it);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int int_smime_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
 | 
				
			||||||
 | 
									int ctype_nid, int econt_nid,
 | 
				
			||||||
 | 
									STACK_OF(X509_ALGOR) *mdalgs,
 | 
				
			||||||
 | 
									asn1_output_data_fn *data_fn,
 | 
				
			||||||
 | 
									const ASN1_ITEM *it);
 | 
				
			||||||
 | 
					ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* BEGIN ERROR CODES */
 | 
					/* BEGIN ERROR CODES */
 | 
				
			||||||
/* The following lines are auto generated by the script mkerr.pl. Any changes
 | 
					/* The following lines are auto generated by the script mkerr.pl. Any changes
 | 
				
			||||||
 * made after this point may be overwritten when the script is next run.
 | 
					 * made after this point may be overwritten when the script is next run.
 | 
				
			||||||
@@ -1059,6 +1135,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_F_ASN1_ITEM_VERIFY				 197
 | 
					#define ASN1_F_ASN1_ITEM_VERIFY				 197
 | 
				
			||||||
#define ASN1_F_ASN1_MBSTRING_NCOPY			 122
 | 
					#define ASN1_F_ASN1_MBSTRING_NCOPY			 122
 | 
				
			||||||
#define ASN1_F_ASN1_OBJECT_NEW				 123
 | 
					#define ASN1_F_ASN1_OBJECT_NEW				 123
 | 
				
			||||||
 | 
					#define ASN1_F_ASN1_OUTPUT_DATA				 207
 | 
				
			||||||
#define ASN1_F_ASN1_PACK_STRING				 124
 | 
					#define ASN1_F_ASN1_PACK_STRING				 124
 | 
				
			||||||
#define ASN1_F_ASN1_PCTX_NEW				 205
 | 
					#define ASN1_F_ASN1_PCTX_NEW				 205
 | 
				
			||||||
#define ASN1_F_ASN1_PKCS5_PBE_SET			 125
 | 
					#define ASN1_F_ASN1_PKCS5_PBE_SET			 125
 | 
				
			||||||
@@ -1078,6 +1155,8 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_F_ASN1_UNPACK_STRING			 136
 | 
					#define ASN1_F_ASN1_UNPACK_STRING			 136
 | 
				
			||||||
#define ASN1_F_ASN1_UTCTIME_SET				 187
 | 
					#define ASN1_F_ASN1_UTCTIME_SET				 187
 | 
				
			||||||
#define ASN1_F_ASN1_VERIFY				 137
 | 
					#define ASN1_F_ASN1_VERIFY				 137
 | 
				
			||||||
 | 
					#define ASN1_F_B64_READ_ASN1				 208
 | 
				
			||||||
 | 
					#define ASN1_F_B64_WRITE_ASN1				 209
 | 
				
			||||||
#define ASN1_F_BITSTR_CB				 180
 | 
					#define ASN1_F_BITSTR_CB				 180
 | 
				
			||||||
#define ASN1_F_BN_TO_ASN1_ENUMERATED			 138
 | 
					#define ASN1_F_BN_TO_ASN1_ENUMERATED			 138
 | 
				
			||||||
#define ASN1_F_BN_TO_ASN1_INTEGER			 139
 | 
					#define ASN1_F_BN_TO_ASN1_INTEGER			 139
 | 
				
			||||||
@@ -1118,6 +1197,8 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_F_PARSE_TAGGING				 182
 | 
					#define ASN1_F_PARSE_TAGGING				 182
 | 
				
			||||||
#define ASN1_F_PKCS5_PBE2_SET				 167
 | 
					#define ASN1_F_PKCS5_PBE2_SET				 167
 | 
				
			||||||
#define ASN1_F_PKCS5_PBE_SET				 202
 | 
					#define ASN1_F_PKCS5_PBE_SET				 202
 | 
				
			||||||
 | 
					#define ASN1_F_SMIME_READ_ASN1				 210
 | 
				
			||||||
 | 
					#define ASN1_F_SMIME_TEXT				 211
 | 
				
			||||||
#define ASN1_F_X509_CINF_NEW				 168
 | 
					#define ASN1_F_X509_CINF_NEW				 168
 | 
				
			||||||
#define ASN1_F_X509_CRL_ADD0_REVOKED			 169
 | 
					#define ASN1_F_X509_CRL_ADD0_REVOKED			 169
 | 
				
			||||||
#define ASN1_F_X509_INFO_NEW				 170
 | 
					#define ASN1_F_X509_INFO_NEW				 170
 | 
				
			||||||
@@ -1129,6 +1210,8 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Reason codes. */
 | 
					/* Reason codes. */
 | 
				
			||||||
#define ASN1_R_ADDING_OBJECT				 171
 | 
					#define ASN1_R_ADDING_OBJECT				 171
 | 
				
			||||||
 | 
					#define ASN1_R_ASN1_PARSE_ERROR				 198
 | 
				
			||||||
 | 
					#define ASN1_R_ASN1_SIG_PARSE_ERROR			 199
 | 
				
			||||||
#define ASN1_R_AUX_ERROR				 100
 | 
					#define ASN1_R_AUX_ERROR				 100
 | 
				
			||||||
#define ASN1_R_BAD_CLASS				 101
 | 
					#define ASN1_R_BAD_CLASS				 101
 | 
				
			||||||
#define ASN1_R_BAD_OBJECT_HEADER			 102
 | 
					#define ASN1_R_BAD_OBJECT_HEADER			 102
 | 
				
			||||||
@@ -1175,6 +1258,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG		 128
 | 
					#define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG		 128
 | 
				
			||||||
#define ASN1_R_INVALID_BMPSTRING_LENGTH			 129
 | 
					#define ASN1_R_INVALID_BMPSTRING_LENGTH			 129
 | 
				
			||||||
#define ASN1_R_INVALID_DIGIT				 130
 | 
					#define ASN1_R_INVALID_DIGIT				 130
 | 
				
			||||||
 | 
					#define ASN1_R_INVALID_MIME_TYPE			 200
 | 
				
			||||||
#define ASN1_R_INVALID_MODIFIER				 186
 | 
					#define ASN1_R_INVALID_MODIFIER				 186
 | 
				
			||||||
#define ASN1_R_INVALID_NUMBER				 187
 | 
					#define ASN1_R_INVALID_NUMBER				 187
 | 
				
			||||||
#define ASN1_R_INVALID_SEPARATOR			 131
 | 
					#define ASN1_R_INVALID_SEPARATOR			 131
 | 
				
			||||||
@@ -1184,6 +1268,9 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_IV_TOO_LARGE				 135
 | 
					#define ASN1_R_IV_TOO_LARGE				 135
 | 
				
			||||||
#define ASN1_R_LENGTH_ERROR				 136
 | 
					#define ASN1_R_LENGTH_ERROR				 136
 | 
				
			||||||
#define ASN1_R_LIST_ERROR				 188
 | 
					#define ASN1_R_LIST_ERROR				 188
 | 
				
			||||||
 | 
					#define ASN1_R_MIME_NO_CONTENT_TYPE			 201
 | 
				
			||||||
 | 
					#define ASN1_R_MIME_PARSE_ERROR				 202
 | 
				
			||||||
 | 
					#define ASN1_R_MIME_SIG_PARSE_ERROR			 203
 | 
				
			||||||
#define ASN1_R_MISSING_EOC				 137
 | 
					#define ASN1_R_MISSING_EOC				 137
 | 
				
			||||||
#define ASN1_R_MISSING_SECOND_NUMBER			 138
 | 
					#define ASN1_R_MISSING_SECOND_NUMBER			 138
 | 
				
			||||||
#define ASN1_R_MISSING_VALUE				 189
 | 
					#define ASN1_R_MISSING_VALUE				 189
 | 
				
			||||||
@@ -1193,7 +1280,11 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_NON_HEX_CHARACTERS			 141
 | 
					#define ASN1_R_NON_HEX_CHARACTERS			 141
 | 
				
			||||||
#define ASN1_R_NOT_ASCII_FORMAT				 190
 | 
					#define ASN1_R_NOT_ASCII_FORMAT				 190
 | 
				
			||||||
#define ASN1_R_NOT_ENOUGH_DATA				 142
 | 
					#define ASN1_R_NOT_ENOUGH_DATA				 142
 | 
				
			||||||
 | 
					#define ASN1_R_NO_CONTENT_TYPE				 204
 | 
				
			||||||
#define ASN1_R_NO_MATCHING_CHOICE_TYPE			 143
 | 
					#define ASN1_R_NO_MATCHING_CHOICE_TYPE			 143
 | 
				
			||||||
 | 
					#define ASN1_R_NO_MULTIPART_BODY_FAILURE		 205
 | 
				
			||||||
 | 
					#define ASN1_R_NO_MULTIPART_BOUNDARY			 206
 | 
				
			||||||
 | 
					#define ASN1_R_NO_SIG_CONTENT_TYPE			 207
 | 
				
			||||||
#define ASN1_R_NULL_IS_WRONG_LENGTH			 144
 | 
					#define ASN1_R_NULL_IS_WRONG_LENGTH			 144
 | 
				
			||||||
#define ASN1_R_OBJECT_NOT_ASCII_FORMAT			 191
 | 
					#define ASN1_R_OBJECT_NOT_ASCII_FORMAT			 191
 | 
				
			||||||
#define ASN1_R_ODD_NUMBER_OF_CHARS			 145
 | 
					#define ASN1_R_ODD_NUMBER_OF_CHARS			 145
 | 
				
			||||||
@@ -1203,6 +1294,8 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_SEQUENCE_NOT_CONSTRUCTED			 149
 | 
					#define ASN1_R_SEQUENCE_NOT_CONSTRUCTED			 149
 | 
				
			||||||
#define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG		 192
 | 
					#define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG		 192
 | 
				
			||||||
#define ASN1_R_SHORT_LINE				 150
 | 
					#define ASN1_R_SHORT_LINE				 150
 | 
				
			||||||
 | 
					#define ASN1_R_SIG_INVALID_MIME_TYPE			 208
 | 
				
			||||||
 | 
					#define ASN1_R_STREAMING_NOT_SUPPORTED			 209
 | 
				
			||||||
#define ASN1_R_STRING_TOO_LONG				 151
 | 
					#define ASN1_R_STRING_TOO_LONG				 151
 | 
				
			||||||
#define ASN1_R_STRING_TOO_SHORT				 152
 | 
					#define ASN1_R_STRING_TOO_SHORT				 152
 | 
				
			||||||
#define ASN1_R_TAG_VALUE_TOO_HIGH			 153
 | 
					#define ASN1_R_TAG_VALUE_TOO_HIGH			 153
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
/* crypto/asn1/asn1_err.c */
 | 
					/* crypto/asn1/asn1_err.c */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 * Copyright (c) 1999-2005 The OpenSSL Project.  All rights reserved.
 | 
					 * Copyright (c) 1999-2008 The OpenSSL Project.  All rights reserved.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Redistribution and use in source and binary forms, with or without
 | 
					 * Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 * modification, are permitted provided that the following conditions
 | 
					 * modification, are permitted provided that the following conditions
 | 
				
			||||||
@@ -110,6 +110,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_ASN1_ITEM_VERIFY),	"ASN1_item_verify"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_ITEM_VERIFY),	"ASN1_item_verify"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_MBSTRING_NCOPY),	"ASN1_mbstring_ncopy"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_MBSTRING_NCOPY),	"ASN1_mbstring_ncopy"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_OBJECT_NEW),	"ASN1_OBJECT_new"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_OBJECT_NEW),	"ASN1_OBJECT_new"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_ASN1_OUTPUT_DATA),	"ASN1_OUTPUT_DATA"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_PACK_STRING),	"ASN1_pack_string"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_PACK_STRING),	"ASN1_pack_string"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_PCTX_NEW),	"ASN1_PCTX_NEW"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_PCTX_NEW),	"ASN1_PCTX_NEW"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_PKCS5_PBE_SET),	"ASN1_PKCS5_PBE_SET"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_PKCS5_PBE_SET),	"ASN1_PKCS5_PBE_SET"},
 | 
				
			||||||
@@ -129,6 +130,8 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING),	"ASN1_unpack_string"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING),	"ASN1_unpack_string"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET),	"ASN1_UTCTIME_set"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET),	"ASN1_UTCTIME_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_VERIFY),	"ASN1_verify"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_VERIFY),	"ASN1_verify"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_B64_READ_ASN1),	"B64_READ_ASN1"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_B64_WRITE_ASN1),	"B64_WRITE_ASN1"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_BITSTR_CB),	"BITSTR_CB"},
 | 
					{ERR_FUNC(ASN1_F_BITSTR_CB),	"BITSTR_CB"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_BN_TO_ASN1_ENUMERATED),	"BN_to_ASN1_ENUMERATED"},
 | 
					{ERR_FUNC(ASN1_F_BN_TO_ASN1_ENUMERATED),	"BN_to_ASN1_ENUMERATED"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_BN_TO_ASN1_INTEGER),	"BN_to_ASN1_INTEGER"},
 | 
					{ERR_FUNC(ASN1_F_BN_TO_ASN1_INTEGER),	"BN_to_ASN1_INTEGER"},
 | 
				
			||||||
@@ -169,6 +172,8 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_PARSE_TAGGING),	"PARSE_TAGGING"},
 | 
					{ERR_FUNC(ASN1_F_PARSE_TAGGING),	"PARSE_TAGGING"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET),	"PKCS5_pbe2_set"},
 | 
					{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET),	"PKCS5_pbe2_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_PKCS5_PBE_SET),	"PKCS5_pbe_set"},
 | 
					{ERR_FUNC(ASN1_F_PKCS5_PBE_SET),	"PKCS5_pbe_set"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_SMIME_READ_ASN1),	"SMIME_read_ASN1"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_SMIME_TEXT),	"SMIME_text"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_X509_CINF_NEW),	"X509_CINF_NEW"},
 | 
					{ERR_FUNC(ASN1_F_X509_CINF_NEW),	"X509_CINF_NEW"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_X509_CRL_ADD0_REVOKED),	"X509_CRL_add0_revoked"},
 | 
					{ERR_FUNC(ASN1_F_X509_CRL_ADD0_REVOKED),	"X509_CRL_add0_revoked"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_X509_INFO_NEW),	"X509_INFO_new"},
 | 
					{ERR_FUNC(ASN1_F_X509_INFO_NEW),	"X509_INFO_new"},
 | 
				
			||||||
@@ -183,6 +188,8 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
					static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
{ERR_REASON(ASN1_R_ADDING_OBJECT)        ,"adding object"},
 | 
					{ERR_REASON(ASN1_R_ADDING_OBJECT)        ,"adding object"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_ASN1_PARSE_ERROR)     ,"asn1 parse error"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_ASN1_SIG_PARSE_ERROR) ,"asn1 sig parse error"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_AUX_ERROR)            ,"aux error"},
 | 
					{ERR_REASON(ASN1_R_AUX_ERROR)            ,"aux error"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_BAD_CLASS)            ,"bad class"},
 | 
					{ERR_REASON(ASN1_R_BAD_CLASS)            ,"bad class"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_BAD_OBJECT_HEADER)    ,"bad object header"},
 | 
					{ERR_REASON(ASN1_R_BAD_OBJECT_HEADER)    ,"bad object header"},
 | 
				
			||||||
@@ -229,6 +236,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			|||||||
{ERR_REASON(ASN1_R_INTEGER_TOO_LARGE_FOR_LONG),"integer too large for long"},
 | 
					{ERR_REASON(ASN1_R_INTEGER_TOO_LARGE_FOR_LONG),"integer too large for long"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_BMPSTRING_LENGTH),"invalid bmpstring length"},
 | 
					{ERR_REASON(ASN1_R_INVALID_BMPSTRING_LENGTH),"invalid bmpstring length"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_DIGIT)        ,"invalid digit"},
 | 
					{ERR_REASON(ASN1_R_INVALID_DIGIT)        ,"invalid digit"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_INVALID_MIME_TYPE)    ,"invalid mime type"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_MODIFIER)     ,"invalid modifier"},
 | 
					{ERR_REASON(ASN1_R_INVALID_MODIFIER)     ,"invalid modifier"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_NUMBER)       ,"invalid number"},
 | 
					{ERR_REASON(ASN1_R_INVALID_NUMBER)       ,"invalid number"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_SEPARATOR)    ,"invalid separator"},
 | 
					{ERR_REASON(ASN1_R_INVALID_SEPARATOR)    ,"invalid separator"},
 | 
				
			||||||
@@ -238,6 +246,9 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			|||||||
{ERR_REASON(ASN1_R_IV_TOO_LARGE)         ,"iv too large"},
 | 
					{ERR_REASON(ASN1_R_IV_TOO_LARGE)         ,"iv too large"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_LENGTH_ERROR)         ,"length error"},
 | 
					{ERR_REASON(ASN1_R_LENGTH_ERROR)         ,"length error"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_LIST_ERROR)           ,"list error"},
 | 
					{ERR_REASON(ASN1_R_LIST_ERROR)           ,"list error"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_MIME_NO_CONTENT_TYPE) ,"mime no content type"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_MIME_PARSE_ERROR)     ,"mime parse error"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_MIME_SIG_PARSE_ERROR) ,"mime sig parse error"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_MISSING_EOC)          ,"missing eoc"},
 | 
					{ERR_REASON(ASN1_R_MISSING_EOC)          ,"missing eoc"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_MISSING_SECOND_NUMBER),"missing second number"},
 | 
					{ERR_REASON(ASN1_R_MISSING_SECOND_NUMBER),"missing second number"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_MISSING_VALUE)        ,"missing value"},
 | 
					{ERR_REASON(ASN1_R_MISSING_VALUE)        ,"missing value"},
 | 
				
			||||||
@@ -247,7 +258,11 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			|||||||
{ERR_REASON(ASN1_R_NON_HEX_CHARACTERS)   ,"non hex characters"},
 | 
					{ERR_REASON(ASN1_R_NON_HEX_CHARACTERS)   ,"non hex characters"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_NOT_ASCII_FORMAT)     ,"not ascii format"},
 | 
					{ERR_REASON(ASN1_R_NOT_ASCII_FORMAT)     ,"not ascii format"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_NOT_ENOUGH_DATA)      ,"not enough data"},
 | 
					{ERR_REASON(ASN1_R_NOT_ENOUGH_DATA)      ,"not enough data"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_NO_CONTENT_TYPE)      ,"no content type"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_NO_MATCHING_CHOICE_TYPE),"no matching choice type"},
 | 
					{ERR_REASON(ASN1_R_NO_MATCHING_CHOICE_TYPE),"no matching choice type"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_NO_SIG_CONTENT_TYPE)  ,"no sig content type"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_NULL_IS_WRONG_LENGTH) ,"null is wrong length"},
 | 
					{ERR_REASON(ASN1_R_NULL_IS_WRONG_LENGTH) ,"null is wrong length"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_OBJECT_NOT_ASCII_FORMAT),"object not ascii format"},
 | 
					{ERR_REASON(ASN1_R_OBJECT_NOT_ASCII_FORMAT),"object not ascii format"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_ODD_NUMBER_OF_CHARS)  ,"odd number of chars"},
 | 
					{ERR_REASON(ASN1_R_ODD_NUMBER_OF_CHARS)  ,"odd number of chars"},
 | 
				
			||||||
@@ -257,6 +272,8 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			|||||||
{ERR_REASON(ASN1_R_SEQUENCE_NOT_CONSTRUCTED),"sequence not constructed"},
 | 
					{ERR_REASON(ASN1_R_SEQUENCE_NOT_CONSTRUCTED),"sequence not constructed"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG),"sequence or set needs config"},
 | 
					{ERR_REASON(ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG),"sequence or set needs config"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_SHORT_LINE)           ,"short line"},
 | 
					{ERR_REASON(ASN1_R_SHORT_LINE)           ,"short line"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_STREAMING_NOT_SUPPORTED),"streaming not supported"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_STRING_TOO_LONG)      ,"string too long"},
 | 
					{ERR_REASON(ASN1_R_STRING_TOO_LONG)      ,"string too long"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_STRING_TOO_SHORT)     ,"string too short"},
 | 
					{ERR_REASON(ASN1_R_STRING_TOO_SHORT)     ,"string too short"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_TAG_VALUE_TOO_HIGH)   ,"tag value too high"},
 | 
					{ERR_REASON(ASN1_R_TAG_VALUE_TOO_HIGH)   ,"tag value too high"},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -393,6 +393,14 @@ int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len)
 | 
				
			|||||||
	return(1);
 | 
						return(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						if (str->data)
 | 
				
			||||||
 | 
							OPENSSL_free(str->data);
 | 
				
			||||||
 | 
						str->data = data;
 | 
				
			||||||
 | 
						str->length = len;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASN1_STRING *ASN1_STRING_new(void)
 | 
					ASN1_STRING *ASN1_STRING_new(void)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	return(ASN1_STRING_type_new(V_ASN1_OCTET_STRING));
 | 
						return(ASN1_STRING_type_new(V_ASN1_OCTET_STRING));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -169,6 +169,9 @@ extern "C" {
 | 
				
			|||||||
#define ASN1_NDEF_SEQUENCE(tname) \
 | 
					#define ASN1_NDEF_SEQUENCE(tname) \
 | 
				
			||||||
	ASN1_SEQUENCE(tname)
 | 
						ASN1_SEQUENCE(tname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
 | 
				
			||||||
 | 
						ASN1_SEQUENCE_cb(tname, cb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_SEQUENCE_cb(tname, cb) \
 | 
					#define ASN1_SEQUENCE_cb(tname, cb) \
 | 
				
			||||||
	static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
 | 
						static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
 | 
				
			||||||
	ASN1_SEQUENCE(tname)
 | 
						ASN1_SEQUENCE(tname)
 | 
				
			||||||
@@ -368,6 +371,10 @@ extern "C" {
 | 
				
			|||||||
#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
 | 
					#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
 | 
				
			||||||
			ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
 | 
								ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* EXPLICIT using indefinite length constructed form */
 | 
				
			||||||
 | 
					#define ASN1_NDEF_EXP(stname, field, type, tag) \
 | 
				
			||||||
 | 
								ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* EXPLICIT OPTIONAL using indefinite length constructed form */
 | 
					/* EXPLICIT OPTIONAL using indefinite length constructed form */
 | 
				
			||||||
#define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
 | 
					#define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
 | 
				
			||||||
			ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
 | 
								ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										876
									
								
								crypto/asn1/asn_mime.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										876
									
								
								crypto/asn1/asn_mime.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,876 @@
 | 
				
			|||||||
 | 
					/* asn_mime.c */
 | 
				
			||||||
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 | 
					 * project.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/* ====================================================================
 | 
				
			||||||
 | 
					 * Copyright (c) 1999-2008 The OpenSSL Project.  All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 * modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 * are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 1. Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer. 
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 2. Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer in
 | 
				
			||||||
 | 
					 *    the documentation and/or other materials provided with the
 | 
				
			||||||
 | 
					 *    distribution.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 3. All advertising materials mentioning features or use of this
 | 
				
			||||||
 | 
					 *    software must display the following acknowledgment:
 | 
				
			||||||
 | 
					 *    "This product includes software developed by the OpenSSL Project
 | 
				
			||||||
 | 
					 *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 | 
				
			||||||
 | 
					 *    endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					 *    prior written permission. For written permission, please contact
 | 
				
			||||||
 | 
					 *    licensing@OpenSSL.org.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 5. Products derived from this software may not be called "OpenSSL"
 | 
				
			||||||
 | 
					 *    nor may "OpenSSL" appear in their names without prior written
 | 
				
			||||||
 | 
					 *    permission of the OpenSSL Project.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 6. Redistributions of any form whatsoever must retain the following
 | 
				
			||||||
 | 
					 *    acknowledgment:
 | 
				
			||||||
 | 
					 *    "This product includes software developed by the OpenSSL Project
 | 
				
			||||||
 | 
					 *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 | 
				
			||||||
 | 
					 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
				
			||||||
 | 
					 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 | 
				
			||||||
 | 
					 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
				
			||||||
 | 
					 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | 
				
			||||||
 | 
					 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
				
			||||||
 | 
					 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 | 
				
			||||||
 | 
					 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 | 
				
			||||||
 | 
					 * OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 * ====================================================================
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					#include "cryptlib.h"
 | 
				
			||||||
 | 
					#include <openssl/rand.h>
 | 
				
			||||||
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
 | 
					#include <openssl/asn1.h>
 | 
				
			||||||
 | 
					#include <openssl/asn1t.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Generalised MIME like utilities for streaming ASN1. Although many
 | 
				
			||||||
 | 
					 * have a PKCS7/CMS like flavour others are more general purpose.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MIME format structures
 | 
				
			||||||
 | 
					 * Note that all are translated to lower case apart from
 | 
				
			||||||
 | 
					 * parameter values. Quotes are stripped off
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					char *param_name;			/* Param name e.g. "micalg" */
 | 
				
			||||||
 | 
					char *param_value;			/* Param value e.g. "sha1" */
 | 
				
			||||||
 | 
					} MIME_PARAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DECLARE_STACK_OF(MIME_PARAM)
 | 
				
			||||||
 | 
					IMPLEMENT_STACK_OF(MIME_PARAM)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					char *name;				/* Name of line e.g. "content-type" */
 | 
				
			||||||
 | 
					char *value;				/* Value of line e.g. "text/plain" */
 | 
				
			||||||
 | 
					STACK_OF(MIME_PARAM) *params;		/* Zero or more parameters */
 | 
				
			||||||
 | 
					} MIME_HEADER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DECLARE_STACK_OF(MIME_HEADER)
 | 
				
			||||||
 | 
					IMPLEMENT_STACK_OF(MIME_HEADER)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char * strip_ends(char *name);
 | 
				
			||||||
 | 
					static char * strip_start(char *name);
 | 
				
			||||||
 | 
					static char * strip_end(char *name);
 | 
				
			||||||
 | 
					static MIME_HEADER *mime_hdr_new(char *name, char *value);
 | 
				
			||||||
 | 
					static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value);
 | 
				
			||||||
 | 
					static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio);
 | 
				
			||||||
 | 
					static int mime_hdr_cmp(const MIME_HEADER * const *a,
 | 
				
			||||||
 | 
								const MIME_HEADER * const *b);
 | 
				
			||||||
 | 
					static int mime_param_cmp(const MIME_PARAM * const *a,
 | 
				
			||||||
 | 
								const MIME_PARAM * const *b);
 | 
				
			||||||
 | 
					static void mime_param_free(MIME_PARAM *param);
 | 
				
			||||||
 | 
					static int mime_bound_check(char *line, int linelen, char *bound, int blen);
 | 
				
			||||||
 | 
					static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret);
 | 
				
			||||||
 | 
					static int strip_eol(char *linebuf, int *plen);
 | 
				
			||||||
 | 
					static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name);
 | 
				
			||||||
 | 
					static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name);
 | 
				
			||||||
 | 
					static void mime_hdr_free(MIME_HEADER *hdr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_SMLEN 1024
 | 
				
			||||||
 | 
					#define mime_debug(x) /* x */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Base 64 read and write of ASN1 structure */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int B64_write_ASN1(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
 | 
				
			||||||
 | 
									const ASN1_ITEM *it)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BIO *b64;
 | 
				
			||||||
 | 
						int r;
 | 
				
			||||||
 | 
						b64 = BIO_new(BIO_f_base64());
 | 
				
			||||||
 | 
						if(!b64)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_B64_WRITE_ASN1,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						/* prepend the b64 BIO so all data is base64 encoded.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						out = BIO_push(b64, out);
 | 
				
			||||||
 | 
						r = ASN1_item_i2d_bio(it, out, val);
 | 
				
			||||||
 | 
						(void)BIO_flush(out);
 | 
				
			||||||
 | 
						BIO_pop(out);
 | 
				
			||||||
 | 
						BIO_free(b64);
 | 
				
			||||||
 | 
						return r;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static ASN1_VALUE *b64_read_asn1(BIO *bio, const ASN1_ITEM *it)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						BIO *b64;
 | 
				
			||||||
 | 
						ASN1_VALUE *val;
 | 
				
			||||||
 | 
						if(!(b64 = BIO_new(BIO_f_base64()))) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_B64_READ_ASN1,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						bio = BIO_push(b64, bio);
 | 
				
			||||||
 | 
						val = ASN1_item_d2i_bio(it, bio, NULL);
 | 
				
			||||||
 | 
						if(!val)
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_B64_READ_ASN1,ASN1_R_DECODE_ERROR);
 | 
				
			||||||
 | 
						(void)BIO_flush(bio);
 | 
				
			||||||
 | 
						bio = BIO_pop(bio);
 | 
				
			||||||
 | 
						BIO_free(b64);
 | 
				
			||||||
 | 
						return val;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Generate the MIME "micalg" parameter from RFC3851, RFC4490 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int asn1_write_micalg(BIO *out, STACK_OF(X509_ALGOR) *mdalgs)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						const EVP_MD *md;
 | 
				
			||||||
 | 
						int i, have_unknown = 0, write_comma, md_nid;
 | 
				
			||||||
 | 
						have_unknown = 0;
 | 
				
			||||||
 | 
						write_comma = 0;
 | 
				
			||||||
 | 
						for (i = 0; i < sk_X509_ALGOR_num(mdalgs); i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (write_comma)
 | 
				
			||||||
 | 
								BIO_write(out, ",", 1);
 | 
				
			||||||
 | 
							write_comma = 1;
 | 
				
			||||||
 | 
							md_nid = OBJ_obj2nid(sk_X509_ALGOR_value(mdalgs, i)->algorithm);
 | 
				
			||||||
 | 
							md = EVP_get_digestbynid(md_nid);
 | 
				
			||||||
 | 
							switch(md_nid)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								case NID_sha1:
 | 
				
			||||||
 | 
								BIO_puts(out, "sha1");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case NID_md5:
 | 
				
			||||||
 | 
								BIO_puts(out, "md5");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case NID_sha256:
 | 
				
			||||||
 | 
								BIO_puts(out, "sha-256");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case NID_sha384:
 | 
				
			||||||
 | 
								BIO_puts(out, "sha-384");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case NID_sha512:
 | 
				
			||||||
 | 
								BIO_puts(out, "sha-512");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
								if (have_unknown)
 | 
				
			||||||
 | 
									write_comma = 0;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_puts(out, "unknown");
 | 
				
			||||||
 | 
									have_unknown = 1;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SMIME sender */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int int_smime_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
 | 
				
			||||||
 | 
									int ctype_nid, int econt_nid,
 | 
				
			||||||
 | 
									STACK_OF(X509_ALGOR) *mdalgs,
 | 
				
			||||||
 | 
									asn1_output_data_fn *data_fn,
 | 
				
			||||||
 | 
									const ASN1_ITEM *it)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char bound[33], c;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
						const char *mime_prefix, *mime_eol, *cname = "smime.p7m";
 | 
				
			||||||
 | 
						const char *msg_type=NULL;
 | 
				
			||||||
 | 
						if (flags & SMIME_OLDMIME)
 | 
				
			||||||
 | 
							mime_prefix = "application/x-pkcs7-";
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							mime_prefix = "application/pkcs7-";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (flags & SMIME_CRLFEOL)
 | 
				
			||||||
 | 
							mime_eol = "\r\n";
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							mime_eol = "\n";
 | 
				
			||||||
 | 
						if((flags & SMIME_DETACHED) && data) {
 | 
				
			||||||
 | 
						/* We want multipart/signed */
 | 
				
			||||||
 | 
							/* Generate a random boundary */
 | 
				
			||||||
 | 
							RAND_pseudo_bytes((unsigned char *)bound, 32);
 | 
				
			||||||
 | 
							for(i = 0; i < 32; i++) {
 | 
				
			||||||
 | 
								c = bound[i] & 0xf;
 | 
				
			||||||
 | 
								if(c < 10) c += '0';
 | 
				
			||||||
 | 
								else c += 'A' - 10;
 | 
				
			||||||
 | 
								bound[i] = c;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							bound[32] = 0;
 | 
				
			||||||
 | 
							BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
 | 
				
			||||||
 | 
							BIO_printf(bio, "Content-Type: multipart/signed;");
 | 
				
			||||||
 | 
							BIO_printf(bio, " protocol=\"%ssignature\";", mime_prefix);
 | 
				
			||||||
 | 
							BIO_puts(bio, " micalg=\"");
 | 
				
			||||||
 | 
							asn1_write_micalg(bio, mdalgs);
 | 
				
			||||||
 | 
							BIO_printf(bio, "\"; boundary=\"----%s\"%s%s",
 | 
				
			||||||
 | 
											bound, mime_eol, mime_eol);
 | 
				
			||||||
 | 
							BIO_printf(bio, "This is an S/MIME signed message%s%s",
 | 
				
			||||||
 | 
											mime_eol, mime_eol);
 | 
				
			||||||
 | 
							/* Now write out the first part */
 | 
				
			||||||
 | 
							BIO_printf(bio, "------%s%s", bound, mime_eol);
 | 
				
			||||||
 | 
							if (!data_fn(bio, data, val, flags, it))
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							BIO_printf(bio, "%s------%s%s", mime_eol, bound, mime_eol);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* Headers for signature */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							BIO_printf(bio, "Content-Type: %ssignature;", mime_prefix); 
 | 
				
			||||||
 | 
							BIO_printf(bio, " name=\"smime.p7s\"%s", mime_eol);
 | 
				
			||||||
 | 
							BIO_printf(bio, "Content-Transfer-Encoding: base64%s",
 | 
				
			||||||
 | 
													mime_eol);
 | 
				
			||||||
 | 
							BIO_printf(bio, "Content-Disposition: attachment;");
 | 
				
			||||||
 | 
							BIO_printf(bio, " filename=\"smime.p7s\"%s%s",
 | 
				
			||||||
 | 
												mime_eol, mime_eol);
 | 
				
			||||||
 | 
							B64_write_ASN1(bio, val, NULL, 0, it);
 | 
				
			||||||
 | 
							BIO_printf(bio,"%s------%s--%s%s", mime_eol, bound,
 | 
				
			||||||
 | 
												mime_eol, mime_eol);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Determine smime-type header */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ctype_nid == NID_pkcs7_enveloped)
 | 
				
			||||||
 | 
							msg_type = "enveloped-data";
 | 
				
			||||||
 | 
						else if (ctype_nid == NID_pkcs7_signed)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (econt_nid == NID_id_smime_ct_receipt)
 | 
				
			||||||
 | 
								msg_type = "signed-receipt";
 | 
				
			||||||
 | 
							else if (sk_X509_ALGOR_num(mdalgs) >= 0)
 | 
				
			||||||
 | 
								msg_type = "signed-data";
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								msg_type = "certs-only";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else if (ctype_nid == NID_id_smime_ct_compressedData)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							msg_type = "compressed-data";
 | 
				
			||||||
 | 
							cname = "smime.p7z";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						/* MIME headers */
 | 
				
			||||||
 | 
						BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
 | 
				
			||||||
 | 
						BIO_printf(bio, "Content-Disposition: attachment;");
 | 
				
			||||||
 | 
						BIO_printf(bio, " filename=\"%s\"%s", cname, mime_eol);
 | 
				
			||||||
 | 
						BIO_printf(bio, "Content-Type: %smime;", mime_prefix);
 | 
				
			||||||
 | 
						if (msg_type)
 | 
				
			||||||
 | 
							BIO_printf(bio, " smime-type=%s;", msg_type);
 | 
				
			||||||
 | 
						BIO_printf(bio, " name=\"%s\"%s", cname, mime_eol);
 | 
				
			||||||
 | 
						BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s",
 | 
				
			||||||
 | 
											mime_eol, mime_eol);
 | 
				
			||||||
 | 
						if (!B64_write_ASN1(bio, val, data, flags, it))
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						BIO_printf(bio, "%s", mime_eol);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Handle output of ASN1 data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
 | 
				
			||||||
 | 
										const ASN1_ITEM *it)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BIO *tmpbio;
 | 
				
			||||||
 | 
						const ASN1_AUX *aux = it->funcs;
 | 
				
			||||||
 | 
						ASN1_STREAM_ARG sarg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!(flags & SMIME_DETACHED))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							SMIME_crlf_copy(data, out, flags);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!aux || !aux->asn1_cb)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_ASN1_OUTPUT_DATA,
 | 
				
			||||||
 | 
										ASN1_R_STREAMING_NOT_SUPPORTED);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sarg.out = out;
 | 
				
			||||||
 | 
						sarg.ndef_bio = NULL;
 | 
				
			||||||
 | 
						sarg.boundary = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Let ASN1 code prepend any needed BIOs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (aux->asn1_cb(ASN1_OP_DETACHED_PRE, &val, it, &sarg) <= 0)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Copy data across, passing through filter BIOs for processing */
 | 
				
			||||||
 | 
						SMIME_crlf_copy(data, sarg.ndef_bio, flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Finalize structure */
 | 
				
			||||||
 | 
						if (aux->asn1_cb(ASN1_OP_DETACHED_POST, &val, it, &sarg) <= 0)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Now remove any digests prepended to the BIO */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while (sarg.ndef_bio != out)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							tmpbio = BIO_pop(sarg.ndef_bio);
 | 
				
			||||||
 | 
							BIO_free(sarg.ndef_bio);
 | 
				
			||||||
 | 
							sarg.ndef_bio = tmpbio;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SMIME reader: handle multipart/signed and opaque signing.
 | 
				
			||||||
 | 
					 * in multipart case the content is placed in a memory BIO
 | 
				
			||||||
 | 
					 * pointed to by "bcont". In opaque this is set to NULL
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						BIO *asnin;
 | 
				
			||||||
 | 
						STACK_OF(MIME_HEADER) *headers = NULL;
 | 
				
			||||||
 | 
						STACK_OF(BIO) *parts = NULL;
 | 
				
			||||||
 | 
						MIME_HEADER *hdr;
 | 
				
			||||||
 | 
						MIME_PARAM *prm;
 | 
				
			||||||
 | 
						ASN1_VALUE *val;
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(bcont) *bcont = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!(headers = mime_parse_hdr(bio))) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_MIME_PARSE_ERROR);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(!(hdr = mime_hdr_find(headers, "content-type")) || !hdr->value) {
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_NO_CONTENT_TYPE);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Handle multipart/signed */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(!strcmp(hdr->value, "multipart/signed")) {
 | 
				
			||||||
 | 
							/* Split into two parts */
 | 
				
			||||||
 | 
							prm = mime_param_find(hdr, "boundary");
 | 
				
			||||||
 | 
							if(!prm || !prm->param_value) {
 | 
				
			||||||
 | 
								sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_NO_MULTIPART_BOUNDARY);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ret = multi_split(bio, prm->param_value, &parts);
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							if(!ret || (sk_BIO_num(parts) != 2) ) {
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_NO_MULTIPART_BODY_FAILURE);
 | 
				
			||||||
 | 
								sk_BIO_pop_free(parts, BIO_vfree);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* Parse the signature piece */
 | 
				
			||||||
 | 
							asnin = sk_BIO_value(parts, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!(headers = mime_parse_hdr(asnin))) {
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_MIME_SIG_PARSE_ERROR);
 | 
				
			||||||
 | 
								sk_BIO_pop_free(parts, BIO_vfree);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* Get content type */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(!(hdr = mime_hdr_find(headers, "content-type")) ||
 | 
				
			||||||
 | 
													 !hdr->value) {
 | 
				
			||||||
 | 
								sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_NO_SIG_CONTENT_TYPE);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(strcmp(hdr->value, "application/x-pkcs7-signature") &&
 | 
				
			||||||
 | 
								strcmp(hdr->value, "application/pkcs7-signature")) {
 | 
				
			||||||
 | 
								sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_SIG_INVALID_MIME_TYPE);
 | 
				
			||||||
 | 
								ERR_add_error_data(2, "type: ", hdr->value);
 | 
				
			||||||
 | 
								sk_BIO_pop_free(parts, BIO_vfree);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							/* Read in ASN1 */
 | 
				
			||||||
 | 
							if(!(val = b64_read_asn1(asnin, it))) {
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_ASN1_SIG_PARSE_ERROR);
 | 
				
			||||||
 | 
								sk_BIO_pop_free(parts, BIO_vfree);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(bcont) {
 | 
				
			||||||
 | 
								*bcont = sk_BIO_value(parts, 0);
 | 
				
			||||||
 | 
								BIO_free(asnin);
 | 
				
			||||||
 | 
								sk_BIO_free(parts);
 | 
				
			||||||
 | 
							} else sk_BIO_pop_free(parts, BIO_vfree);
 | 
				
			||||||
 | 
							return val;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						/* OK, if not multipart/signed try opaque signature */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (strcmp (hdr->value, "application/x-pkcs7-mime") &&
 | 
				
			||||||
 | 
						    strcmp (hdr->value, "application/pkcs7-mime")) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_INVALID_MIME_TYPE);
 | 
				
			||||||
 | 
							ERR_add_error_data(2, "type: ", hdr->value);
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if(!(val = b64_read_asn1(bio, it))) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_READ_ASN1, ASN1_R_ASN1_PARSE_ERROR);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return val;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Copy text from one BIO to another making the output CRLF at EOL */
 | 
				
			||||||
 | 
					int SMIME_crlf_copy(BIO *in, BIO *out, int flags)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						BIO *bf;
 | 
				
			||||||
 | 
						char eol;
 | 
				
			||||||
 | 
						int len;
 | 
				
			||||||
 | 
						char linebuf[MAX_SMLEN];
 | 
				
			||||||
 | 
						/* Buffer output so we don't write one line at a time. This is
 | 
				
			||||||
 | 
						 * useful when streaming as we don't end up with one OCTET STRING
 | 
				
			||||||
 | 
						 * per line.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						bf = BIO_new(BIO_f_buffer());
 | 
				
			||||||
 | 
						if (!bf)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						out = BIO_push(bf, out);
 | 
				
			||||||
 | 
						if(flags & SMIME_BINARY)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							while((len = BIO_read(in, linebuf, MAX_SMLEN)) > 0)
 | 
				
			||||||
 | 
											BIO_write(out, linebuf, len);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if(flags & SMIME_TEXT)
 | 
				
			||||||
 | 
								BIO_printf(out, "Content-Type: text/plain\r\n\r\n");
 | 
				
			||||||
 | 
							while ((len = BIO_gets(in, linebuf, MAX_SMLEN)) > 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								eol = strip_eol(linebuf, &len);
 | 
				
			||||||
 | 
								if (len)
 | 
				
			||||||
 | 
									BIO_write(out, linebuf, len);
 | 
				
			||||||
 | 
								if(eol) BIO_write(out, "\r\n", 2);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						(void)BIO_flush(out);
 | 
				
			||||||
 | 
						BIO_pop(out);
 | 
				
			||||||
 | 
						BIO_free(bf);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Strip off headers if they are text/plain */
 | 
				
			||||||
 | 
					int SMIME_text(BIO *in, BIO *out)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char iobuf[4096];
 | 
				
			||||||
 | 
						int len;
 | 
				
			||||||
 | 
						STACK_OF(MIME_HEADER) *headers;
 | 
				
			||||||
 | 
						MIME_HEADER *hdr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!(headers = mime_parse_hdr(in))) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_TEXT,ASN1_R_MIME_PARSE_ERROR);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if(!(hdr = mime_hdr_find(headers, "content-type")) || !hdr->value) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_TEXT,ASN1_R_MIME_NO_CONTENT_TYPE);
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (strcmp (hdr->value, "text/plain")) {
 | 
				
			||||||
 | 
							ASN1err(ASN1_F_SMIME_TEXT,ASN1_R_INVALID_MIME_TYPE);
 | 
				
			||||||
 | 
							ERR_add_error_data(2, "type: ", hdr->value);
 | 
				
			||||||
 | 
							sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
 | 
				
			||||||
 | 
						while ((len = BIO_read(in, iobuf, sizeof(iobuf))) > 0)
 | 
				
			||||||
 | 
											BIO_write(out, iobuf, len);
 | 
				
			||||||
 | 
						if (len < 0)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Split a multipart/XXX message body into component parts: result is
 | 
				
			||||||
 | 
					 * canonical parts in a STACK of bios
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char linebuf[MAX_SMLEN];
 | 
				
			||||||
 | 
						int len, blen;
 | 
				
			||||||
 | 
						int eol = 0, next_eol = 0;
 | 
				
			||||||
 | 
						BIO *bpart = NULL;
 | 
				
			||||||
 | 
						STACK_OF(BIO) *parts;
 | 
				
			||||||
 | 
						char state, part, first;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						blen = strlen(bound);
 | 
				
			||||||
 | 
						part = 0;
 | 
				
			||||||
 | 
						state = 0;
 | 
				
			||||||
 | 
						first = 1;
 | 
				
			||||||
 | 
						parts = sk_BIO_new_null();
 | 
				
			||||||
 | 
						*ret = parts;
 | 
				
			||||||
 | 
						while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
 | 
				
			||||||
 | 
							state = mime_bound_check(linebuf, len, bound, blen);
 | 
				
			||||||
 | 
							if(state == 1) {
 | 
				
			||||||
 | 
								first = 1;
 | 
				
			||||||
 | 
								part++;
 | 
				
			||||||
 | 
							} else if(state == 2) {
 | 
				
			||||||
 | 
								sk_BIO_push(parts, bpart);
 | 
				
			||||||
 | 
								return 1;
 | 
				
			||||||
 | 
							} else if(part) {
 | 
				
			||||||
 | 
								/* Strip CR+LF from linebuf */
 | 
				
			||||||
 | 
								next_eol = strip_eol(linebuf, &len);
 | 
				
			||||||
 | 
								if(first) {
 | 
				
			||||||
 | 
									first = 0;
 | 
				
			||||||
 | 
									if(bpart) sk_BIO_push(parts, bpart);
 | 
				
			||||||
 | 
									bpart = BIO_new(BIO_s_mem());
 | 
				
			||||||
 | 
									BIO_set_mem_eof_return(bpart, 0);
 | 
				
			||||||
 | 
								} else if (eol)
 | 
				
			||||||
 | 
									BIO_write(bpart, "\r\n", 2);
 | 
				
			||||||
 | 
								eol = next_eol;
 | 
				
			||||||
 | 
								if (len)
 | 
				
			||||||
 | 
									BIO_write(bpart, linebuf, len);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* This is the big one: parse MIME header lines up to message body */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MIME_INVALID	0
 | 
				
			||||||
 | 
					#define MIME_START	1
 | 
				
			||||||
 | 
					#define MIME_TYPE	2
 | 
				
			||||||
 | 
					#define MIME_NAME	3
 | 
				
			||||||
 | 
					#define MIME_VALUE	4
 | 
				
			||||||
 | 
					#define MIME_QUOTE	5
 | 
				
			||||||
 | 
					#define MIME_COMMENT	6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *p, *q, c;
 | 
				
			||||||
 | 
						char *ntmp;
 | 
				
			||||||
 | 
						char linebuf[MAX_SMLEN];
 | 
				
			||||||
 | 
						MIME_HEADER *mhdr = NULL;
 | 
				
			||||||
 | 
						STACK_OF(MIME_HEADER) *headers;
 | 
				
			||||||
 | 
						int len, state, save_state = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						headers = sk_MIME_HEADER_new(mime_hdr_cmp);
 | 
				
			||||||
 | 
						while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
 | 
				
			||||||
 | 
						/* If whitespace at line start then continuation line */
 | 
				
			||||||
 | 
						if(mhdr && isspace((unsigned char)linebuf[0])) state = MIME_NAME;
 | 
				
			||||||
 | 
						else state = MIME_START;
 | 
				
			||||||
 | 
						ntmp = NULL;
 | 
				
			||||||
 | 
						/* Go through all characters */
 | 
				
			||||||
 | 
						for(p = linebuf, q = linebuf; (c = *p) && (c!='\r') && (c!='\n'); p++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* State machine to handle MIME headers
 | 
				
			||||||
 | 
						 * if this looks horrible that's because it *is*
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch(state) {
 | 
				
			||||||
 | 
								case MIME_START:
 | 
				
			||||||
 | 
								if(c == ':') {
 | 
				
			||||||
 | 
									state = MIME_TYPE;
 | 
				
			||||||
 | 
									*p = 0;
 | 
				
			||||||
 | 
									ntmp = strip_ends(q);
 | 
				
			||||||
 | 
									q = p + 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case MIME_TYPE:
 | 
				
			||||||
 | 
								if(c == ';') {
 | 
				
			||||||
 | 
									mime_debug("Found End Value\n");
 | 
				
			||||||
 | 
									*p = 0;
 | 
				
			||||||
 | 
									mhdr = mime_hdr_new(ntmp, strip_ends(q));
 | 
				
			||||||
 | 
									sk_MIME_HEADER_push(headers, mhdr);
 | 
				
			||||||
 | 
									ntmp = NULL;
 | 
				
			||||||
 | 
									q = p + 1;
 | 
				
			||||||
 | 
									state = MIME_NAME;
 | 
				
			||||||
 | 
								} else if(c == '(') {
 | 
				
			||||||
 | 
									save_state = state;
 | 
				
			||||||
 | 
									state = MIME_COMMENT;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case MIME_COMMENT:
 | 
				
			||||||
 | 
								if(c == ')') {
 | 
				
			||||||
 | 
									state = save_state;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case MIME_NAME:
 | 
				
			||||||
 | 
								if(c == '=') {
 | 
				
			||||||
 | 
									state = MIME_VALUE;
 | 
				
			||||||
 | 
									*p = 0;
 | 
				
			||||||
 | 
									ntmp = strip_ends(q);
 | 
				
			||||||
 | 
									q = p + 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case MIME_VALUE:
 | 
				
			||||||
 | 
								if(c == ';') {
 | 
				
			||||||
 | 
									state = MIME_NAME;
 | 
				
			||||||
 | 
									*p = 0;
 | 
				
			||||||
 | 
									mime_hdr_addparam(mhdr, ntmp, strip_ends(q));
 | 
				
			||||||
 | 
									ntmp = NULL;
 | 
				
			||||||
 | 
									q = p + 1;
 | 
				
			||||||
 | 
								} else if (c == '"') {
 | 
				
			||||||
 | 
									mime_debug("Found Quote\n");
 | 
				
			||||||
 | 
									state = MIME_QUOTE;
 | 
				
			||||||
 | 
								} else if(c == '(') {
 | 
				
			||||||
 | 
									save_state = state;
 | 
				
			||||||
 | 
									state = MIME_COMMENT;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case MIME_QUOTE:
 | 
				
			||||||
 | 
								if(c == '"') {
 | 
				
			||||||
 | 
									mime_debug("Found Match Quote\n");
 | 
				
			||||||
 | 
									state = MIME_VALUE;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(state == MIME_TYPE) {
 | 
				
			||||||
 | 
							mhdr = mime_hdr_new(ntmp, strip_ends(q));
 | 
				
			||||||
 | 
							sk_MIME_HEADER_push(headers, mhdr);
 | 
				
			||||||
 | 
						} else if(state == MIME_VALUE)
 | 
				
			||||||
 | 
								 mime_hdr_addparam(mhdr, ntmp, strip_ends(q));
 | 
				
			||||||
 | 
						if(p == linebuf) break;	/* Blank line means end of headers */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return headers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *strip_ends(char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return strip_end(strip_start(name));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Strip a parameter of whitespace from start of param */
 | 
				
			||||||
 | 
					static char *strip_start(char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *p, c;
 | 
				
			||||||
 | 
						/* Look for first non white space or quote */
 | 
				
			||||||
 | 
						for(p = name; (c = *p) ;p++) {
 | 
				
			||||||
 | 
							if(c == '"') {
 | 
				
			||||||
 | 
								/* Next char is start of string if non null */
 | 
				
			||||||
 | 
								if(p[1]) return p + 1;
 | 
				
			||||||
 | 
								/* Else null string */
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if(!isspace((unsigned char)c)) return p;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* As above but strip from end of string : maybe should handle brackets? */
 | 
				
			||||||
 | 
					static char *strip_end(char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *p, c;
 | 
				
			||||||
 | 
						if(!name) return NULL;
 | 
				
			||||||
 | 
						/* Look for first non white space or quote */
 | 
				
			||||||
 | 
						for(p = name + strlen(name) - 1; p >= name ;p--) {
 | 
				
			||||||
 | 
							c = *p;
 | 
				
			||||||
 | 
							if(c == '"') {
 | 
				
			||||||
 | 
								if(p - 1 == name) return NULL;
 | 
				
			||||||
 | 
								*p = 0;
 | 
				
			||||||
 | 
								return name;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if(isspace((unsigned char)c)) *p = 0;	
 | 
				
			||||||
 | 
							else return name;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static MIME_HEADER *mime_hdr_new(char *name, char *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						MIME_HEADER *mhdr;
 | 
				
			||||||
 | 
						char *tmpname, *tmpval, *p;
 | 
				
			||||||
 | 
						int c;
 | 
				
			||||||
 | 
						if(name) {
 | 
				
			||||||
 | 
							if(!(tmpname = BUF_strdup(name))) return NULL;
 | 
				
			||||||
 | 
							for(p = tmpname ; *p; p++) {
 | 
				
			||||||
 | 
								c = *p;
 | 
				
			||||||
 | 
								if(isupper(c)) {
 | 
				
			||||||
 | 
									c = tolower(c);
 | 
				
			||||||
 | 
									*p = c;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						} else tmpname = NULL;
 | 
				
			||||||
 | 
						if(value) {
 | 
				
			||||||
 | 
							if(!(tmpval = BUF_strdup(value))) return NULL;
 | 
				
			||||||
 | 
							for(p = tmpval ; *p; p++) {
 | 
				
			||||||
 | 
								c = *p;
 | 
				
			||||||
 | 
								if(isupper(c)) {
 | 
				
			||||||
 | 
									c = tolower(c);
 | 
				
			||||||
 | 
									*p = c;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						} else tmpval = NULL;
 | 
				
			||||||
 | 
						mhdr = (MIME_HEADER *) OPENSSL_malloc(sizeof(MIME_HEADER));
 | 
				
			||||||
 | 
						if(!mhdr) return NULL;
 | 
				
			||||||
 | 
						mhdr->name = tmpname;
 | 
				
			||||||
 | 
						mhdr->value = tmpval;
 | 
				
			||||||
 | 
						if(!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) return NULL;
 | 
				
			||||||
 | 
						return mhdr;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *tmpname, *tmpval, *p;
 | 
				
			||||||
 | 
						int c;
 | 
				
			||||||
 | 
						MIME_PARAM *mparam;
 | 
				
			||||||
 | 
						if(name) {
 | 
				
			||||||
 | 
							tmpname = BUF_strdup(name);
 | 
				
			||||||
 | 
							if(!tmpname) return 0;
 | 
				
			||||||
 | 
							for(p = tmpname ; *p; p++) {
 | 
				
			||||||
 | 
								c = *p;
 | 
				
			||||||
 | 
								if(isupper(c)) {
 | 
				
			||||||
 | 
									c = tolower(c);
 | 
				
			||||||
 | 
									*p = c;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						} else tmpname = NULL;
 | 
				
			||||||
 | 
						if(value) {
 | 
				
			||||||
 | 
							tmpval = BUF_strdup(value);
 | 
				
			||||||
 | 
							if(!tmpval) return 0;
 | 
				
			||||||
 | 
						} else tmpval = NULL;
 | 
				
			||||||
 | 
						/* Parameter values are case sensitive so leave as is */
 | 
				
			||||||
 | 
						mparam = (MIME_PARAM *) OPENSSL_malloc(sizeof(MIME_PARAM));
 | 
				
			||||||
 | 
						if(!mparam) return 0;
 | 
				
			||||||
 | 
						mparam->param_name = tmpname;
 | 
				
			||||||
 | 
						mparam->param_value = tmpval;
 | 
				
			||||||
 | 
						sk_MIME_PARAM_push(mhdr->params, mparam);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int mime_hdr_cmp(const MIME_HEADER * const *a,
 | 
				
			||||||
 | 
								const MIME_HEADER * const *b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return(strcmp((*a)->name, (*b)->name));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int mime_param_cmp(const MIME_PARAM * const *a,
 | 
				
			||||||
 | 
								const MIME_PARAM * const *b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return(strcmp((*a)->param_name, (*b)->param_name));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Find a header with a given name (if possible) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						MIME_HEADER htmp;
 | 
				
			||||||
 | 
						int idx;
 | 
				
			||||||
 | 
						htmp.name = name;
 | 
				
			||||||
 | 
						idx = sk_MIME_HEADER_find(hdrs, &htmp);
 | 
				
			||||||
 | 
						if(idx < 0) return NULL;
 | 
				
			||||||
 | 
						return sk_MIME_HEADER_value(hdrs, idx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						MIME_PARAM param;
 | 
				
			||||||
 | 
						int idx;
 | 
				
			||||||
 | 
						param.param_name = name;
 | 
				
			||||||
 | 
						idx = sk_MIME_PARAM_find(hdr->params, ¶m);
 | 
				
			||||||
 | 
						if(idx < 0) return NULL;
 | 
				
			||||||
 | 
						return sk_MIME_PARAM_value(hdr->params, idx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void mime_hdr_free(MIME_HEADER *hdr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(hdr->name) OPENSSL_free(hdr->name);
 | 
				
			||||||
 | 
						if(hdr->value) OPENSSL_free(hdr->value);
 | 
				
			||||||
 | 
						if(hdr->params) sk_MIME_PARAM_pop_free(hdr->params, mime_param_free);
 | 
				
			||||||
 | 
						OPENSSL_free(hdr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void mime_param_free(MIME_PARAM *param)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(param->param_name) OPENSSL_free(param->param_name);
 | 
				
			||||||
 | 
						if(param->param_value) OPENSSL_free(param->param_value);
 | 
				
			||||||
 | 
						OPENSSL_free(param);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Check for a multipart boundary. Returns:
 | 
				
			||||||
 | 
					 * 0 : no boundary
 | 
				
			||||||
 | 
					 * 1 : part boundary
 | 
				
			||||||
 | 
					 * 2 : final boundary
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static int mime_bound_check(char *line, int linelen, char *bound, int blen)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(linelen == -1) linelen = strlen(line);
 | 
				
			||||||
 | 
						if(blen == -1) blen = strlen(bound);
 | 
				
			||||||
 | 
						/* Quickly eliminate if line length too short */
 | 
				
			||||||
 | 
						if(blen + 2 > linelen) return 0;
 | 
				
			||||||
 | 
						/* Check for part boundary */
 | 
				
			||||||
 | 
						if(!strncmp(line, "--", 2) && !strncmp(line + 2, bound, blen)) {
 | 
				
			||||||
 | 
							if(!strncmp(line + blen + 2, "--", 2)) return 2;
 | 
				
			||||||
 | 
							else return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int strip_eol(char *linebuf, int *plen)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						int len = *plen;
 | 
				
			||||||
 | 
						char *p, c;
 | 
				
			||||||
 | 
						int is_eol = 0;
 | 
				
			||||||
 | 
						p = linebuf + len - 1;
 | 
				
			||||||
 | 
						for (p = linebuf + len - 1; len > 0; len--, p--)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							c = *p;
 | 
				
			||||||
 | 
							if (c == '\n')
 | 
				
			||||||
 | 
								is_eol = 1;
 | 
				
			||||||
 | 
							else if (c != '\r')
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						*plen = len;
 | 
				
			||||||
 | 
						return is_eol;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
@@ -149,7 +149,7 @@ static int do_create(char *value, char *name)
 | 
				
			|||||||
		if (lntmp == NULL)
 | 
							if (lntmp == NULL)
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		memcpy(lntmp, ln, p - ln);
 | 
							memcpy(lntmp, ln, p - ln);
 | 
				
			||||||
		lntmp[p - ln + 1] = 0;
 | 
							lntmp[p - ln] = 0;
 | 
				
			||||||
		oid = OBJ_nid2obj(nid);
 | 
							oid = OBJ_nid2obj(nid);
 | 
				
			||||||
		oid->ln = lntmp;
 | 
							oid->ln = lntmp;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -244,7 +244,7 @@ get_next:
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if(!(cflag & X509_FLAG_NO_ATTRIBUTES))
 | 
						if(!(cflag & X509_FLAG_NO_EXTENSIONS))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		exts = X509_REQ_get_extensions(x);
 | 
							exts = X509_REQ_get_extensions(x);
 | 
				
			||||||
		if(exts)
 | 
							if(exts)
 | 
				
			||||||
@@ -262,7 +262,7 @@ get_next:
 | 
				
			|||||||
				j=X509_EXTENSION_get_critical(ex);
 | 
									j=X509_EXTENSION_get_critical(ex);
 | 
				
			||||||
				if (BIO_printf(bp,": %s\n",j?"critical":"") <= 0)
 | 
									if (BIO_printf(bp,": %s\n",j?"critical":"") <= 0)
 | 
				
			||||||
					goto err;
 | 
										goto err;
 | 
				
			||||||
				if(!X509V3_EXT_print(bp, ex, 0, 16))
 | 
									if(!X509V3_EXT_print(bp, ex, cflag, 16))
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bp, "%16s", "");
 | 
										BIO_printf(bp, "%16s", "");
 | 
				
			||||||
					M_ASN1_OCTET_STRING_print(bp,ex->value);
 | 
										M_ASN1_OCTET_STRING_print(bp,ex->value);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -393,8 +393,9 @@ int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)
 | 
				
			|||||||
	d= (v[6]-'0')*10+(v[7]-'0');
 | 
						d= (v[6]-'0')*10+(v[7]-'0');
 | 
				
			||||||
	h= (v[8]-'0')*10+(v[9]-'0');
 | 
						h= (v[8]-'0')*10+(v[9]-'0');
 | 
				
			||||||
	m=  (v[10]-'0')*10+(v[11]-'0');
 | 
						m=  (v[10]-'0')*10+(v[11]-'0');
 | 
				
			||||||
	if (	(v[12] >= '0') && (v[12] <= '9') &&
 | 
						if (i >= 14 &&
 | 
				
			||||||
		(v[13] >= '0') && (v[13] <= '9'))
 | 
						    (v[12] >= '0') && (v[12] <= '9') &&
 | 
				
			||||||
 | 
						    (v[13] >= '0') && (v[13] <= '9'))
 | 
				
			||||||
		s=  (v[12]-'0')*10+(v[13]-'0');
 | 
							s=  (v[12]-'0')*10+(v[13]-'0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
 | 
						if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
 | 
				
			||||||
@@ -428,8 +429,9 @@ int ASN1_UTCTIME_print(BIO *bp, ASN1_UTCTIME *tm)
 | 
				
			|||||||
	d= (v[4]-'0')*10+(v[5]-'0');
 | 
						d= (v[4]-'0')*10+(v[5]-'0');
 | 
				
			||||||
	h= (v[6]-'0')*10+(v[7]-'0');
 | 
						h= (v[6]-'0')*10+(v[7]-'0');
 | 
				
			||||||
	m=  (v[8]-'0')*10+(v[9]-'0');
 | 
						m=  (v[8]-'0')*10+(v[9]-'0');
 | 
				
			||||||
	if (	(v[10] >= '0') && (v[10] <= '9') &&
 | 
						if (i >=12 &&
 | 
				
			||||||
		(v[11] >= '0') && (v[11] <= '9'))
 | 
						    (v[10] >= '0') && (v[10] <= '9') &&
 | 
				
			||||||
 | 
						    (v[11] >= '0') && (v[11] <= '9'))
 | 
				
			||||||
		s=  (v[10]-'0')*10+(v[11]-'0');
 | 
							s=  (v[10]-'0')*10+(v[11]-'0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
 | 
						if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s",
 | 
				
			||||||
@@ -449,13 +451,13 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	l=80-2-obase;
 | 
						l=80-2-obase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	b=s=X509_NAME_oneline(name,NULL,0);
 | 
						b=X509_NAME_oneline(name,NULL,0);
 | 
				
			||||||
	if (!*s)
 | 
						if (!*b)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		OPENSSL_free(b);
 | 
							OPENSSL_free(b);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	s++; /* skip the first slash */
 | 
						s=b+1; /* skip the first slash */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	c=s;
 | 
						c=s;
 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
@@ -480,8 +482,7 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			i=s-c;
 | 
								i=s-c;
 | 
				
			||||||
			if (BIO_write(bp,c,i) != i) goto err;
 | 
								if (BIO_write(bp,c,i) != i) goto err;
 | 
				
			||||||
			c+=i;
 | 
								c=s+1;	/* skip following slash */
 | 
				
			||||||
			c++;
 | 
					 | 
				
			||||||
			if (*s != '\0')
 | 
								if (*s != '\0')
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if (BIO_write(bp,", ",2) != 2) goto err;
 | 
									if (BIO_write(bp,", ",2) != 2) goto err;
 | 
				
			||||||
@@ -502,4 +503,3 @@ err:
 | 
				
			|||||||
	OPENSSL_free(b);
 | 
						OPENSSL_free(b);
 | 
				
			||||||
	return(ret);
 | 
						return(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,7 +130,7 @@ ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **pval,
 | 
				
			|||||||
	ASN1_VALUE *ptmpval = NULL;
 | 
						ASN1_VALUE *ptmpval = NULL;
 | 
				
			||||||
	if (!pval)
 | 
						if (!pval)
 | 
				
			||||||
		pval = &ptmpval;
 | 
							pval = &ptmpval;
 | 
				
			||||||
	asn1_tlc_clear(&c);
 | 
						c.valid = 0;
 | 
				
			||||||
	if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0) 
 | 
						if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0) 
 | 
				
			||||||
		return *pval;
 | 
							return *pval;
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
@@ -140,7 +140,7 @@ int ASN1_template_d2i(ASN1_VALUE **pval,
 | 
				
			|||||||
		const unsigned char **in, long len, const ASN1_TEMPLATE *tt)
 | 
							const unsigned char **in, long len, const ASN1_TEMPLATE *tt)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	ASN1_TLC c;
 | 
						ASN1_TLC c;
 | 
				
			||||||
	asn1_tlc_clear(&c);
 | 
						c.valid = 0;
 | 
				
			||||||
	return asn1_template_ex_d2i(pval, in, len, tt, 0, &c);
 | 
						return asn1_template_ex_d2i(pval, in, len, tt, 0, &c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -944,7 +944,7 @@ int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
 | 
				
			|||||||
		if (utype != typ->type)
 | 
							if (utype != typ->type)
 | 
				
			||||||
			ASN1_TYPE_set(typ, utype, NULL);
 | 
								ASN1_TYPE_set(typ, utype, NULL);
 | 
				
			||||||
		opval = pval;
 | 
							opval = pval;
 | 
				
			||||||
		pval = (ASN1_VALUE **)&typ->value.ptr;
 | 
							pval = &typ->value.asn1_value;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	switch(utype)
 | 
						switch(utype)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -494,7 +494,7 @@ static int asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out,
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		for (i = 0, tder = derlst; i < sk_ASN1_VALUE_num(sk);
 | 
							for (i = 0, tder = derlst; i < sk_ASN1_VALUE_num(sk);
 | 
				
			||||||
							i++, tder++)
 | 
												i++, tder++)
 | 
				
			||||||
			sk_ASN1_VALUE_set(sk, i, tder->field);
 | 
								(void)sk_ASN1_VALUE_set(sk, i, tder->field);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	OPENSSL_free(derlst);
 | 
						OPENSSL_free(derlst);
 | 
				
			||||||
	OPENSSL_free(tmpdat);
 | 
						OPENSSL_free(tmpdat);
 | 
				
			||||||
@@ -597,7 +597,7 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype,
 | 
				
			|||||||
		typ = (ASN1_TYPE *)*pval;
 | 
							typ = (ASN1_TYPE *)*pval;
 | 
				
			||||||
		utype = typ->type;
 | 
							utype = typ->type;
 | 
				
			||||||
		*putype = utype;
 | 
							*putype = utype;
 | 
				
			||||||
		pval = (ASN1_VALUE **)&typ->value.ptr;
 | 
							pval = &typ->value.asn1_value;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else utype = *putype;
 | 
						else utype = *putype;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,8 +115,6 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int c
 | 
				
			|||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		i = asn1_get_choice_selector(pval, it);
 | 
							i = asn1_get_choice_selector(pval, it);
 | 
				
			||||||
		if (asn1_cb)
 | 
					 | 
				
			||||||
			asn1_cb(ASN1_OP_FREE_PRE, pval, it);
 | 
					 | 
				
			||||||
		if ((i >= 0) && (i < it->tcount))
 | 
							if ((i >= 0) && (i < it->tcount))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1_VALUE **pchval;
 | 
								ASN1_VALUE **pchval;
 | 
				
			||||||
@@ -221,7 +219,7 @@ void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		ASN1_TYPE *typ = (ASN1_TYPE *)*pval;
 | 
							ASN1_TYPE *typ = (ASN1_TYPE *)*pval;
 | 
				
			||||||
		utype = typ->type;
 | 
							utype = typ->type;
 | 
				
			||||||
		pval = (ASN1_VALUE **)&typ->value.ptr;
 | 
							pval = &typ->value.asn1_value;
 | 
				
			||||||
		if (!*pval)
 | 
							if (!*pval)
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,8 +66,65 @@ ASN1_SEQUENCE(X509_ALGOR) = {
 | 
				
			|||||||
	ASN1_OPT(X509_ALGOR, parameter, ASN1_ANY)
 | 
						ASN1_OPT(X509_ALGOR, parameter, ASN1_ANY)
 | 
				
			||||||
} ASN1_SEQUENCE_END(X509_ALGOR)
 | 
					} ASN1_SEQUENCE_END(X509_ALGOR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ASN1_ITEM_TEMPLATE(X509_ALGORS) = 
 | 
				
			||||||
 | 
						ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, algorithms, X509_ALGOR)
 | 
				
			||||||
 | 
					ASN1_ITEM_TEMPLATE_END(X509_ALGORS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_ASN1_FUNCTIONS(X509_ALGOR)
 | 
					IMPLEMENT_ASN1_FUNCTIONS(X509_ALGOR)
 | 
				
			||||||
 | 
					IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(X509_ALGORS, X509_ALGORS, X509_ALGORS)
 | 
				
			||||||
IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR)
 | 
					IMPLEMENT_ASN1_DUP_FUNCTION(X509_ALGOR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_STACK_OF(X509_ALGOR)
 | 
					IMPLEMENT_STACK_OF(X509_ALGOR)
 | 
				
			||||||
IMPLEMENT_ASN1_SET_OF(X509_ALGOR)
 | 
					IMPLEMENT_ASN1_SET_OF(X509_ALGOR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, void *pval)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						if (!alg)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						if (ptype != V_ASN1_UNDEF)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (alg->parameter == NULL)
 | 
				
			||||||
 | 
								alg->parameter = ASN1_TYPE_new();
 | 
				
			||||||
 | 
							if (alg->parameter == NULL)
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (alg)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (alg->algorithm)
 | 
				
			||||||
 | 
								ASN1_OBJECT_free(alg->algorithm);
 | 
				
			||||||
 | 
							alg->algorithm = aobj;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						if (ptype == 0)
 | 
				
			||||||
 | 
							return 1;	
 | 
				
			||||||
 | 
						if (ptype == V_ASN1_UNDEF)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (alg->parameter)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								ASN1_TYPE_free(alg->parameter);
 | 
				
			||||||
 | 
								alg->parameter = NULL;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							ASN1_TYPE_set(alg->parameter, ptype, pval);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
 | 
				
			||||||
 | 
											X509_ALGOR *algor)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						if (paobj)
 | 
				
			||||||
 | 
							*paobj = algor->algorithm;
 | 
				
			||||||
 | 
						if (pptype)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (algor->parameter == NULL)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								*pptype = V_ASN1_UNDEF;
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								*pptype = algor->parameter->type;
 | 
				
			||||||
 | 
							if (ppval)
 | 
				
			||||||
 | 
								*ppval = algor->parameter->value.ptr;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user