Compare commits
	
		
			1165 Commits
		
	
	
		
			OpenSSL-fi
			...
			OpenSSL_0_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8964efc413 | ||
| 
						 | 
					430b637bd5 | ||
| 
						 | 
					ca3b81c858 | ||
| 
						 | 
					031cbecf86 | ||
| 
						 | 
					1213e6c3c2 | ||
| 
						 | 
					32619893b4 | ||
| 
						 | 
					40e0de0395 | ||
| 
						 | 
					5f9345a2f0 | ||
| 
						 | 
					33ccde59a1 | ||
| 
						 | 
					1909df070f | ||
| 
						 | 
					c23a745820 | ||
| 
						 | 
					924b117422 | ||
| 
						 | 
					24b2806097 | ||
| 
						 | 
					99f5093347 | ||
| 
						 | 
					be88529753 | ||
| 
						 | 
					b3a959a337 | ||
| 
						 | 
					2928cb4c82 | ||
| 
						 | 
					a33e6702a0 | ||
| 
						 | 
					35a65e814b | ||
| 
						 | 
					7ad132b133 | ||
| 
						 | 
					2708813166 | ||
| 
						 | 
					affe98998a | ||
| 
						 | 
					66e8211c0b | ||
| 
						 | 
					dd2dee60f3 | ||
| 
						 | 
					6495179af6 | ||
| 
						 | 
					61b8c79d15 | ||
| 
						 | 
					42aa3ec4f2 | ||
| 
						 | 
					bb152dae8f | ||
| 
						 | 
					c42ab44087 | ||
| 
						 | 
					42e10c3fd6 | ||
| 
						 | 
					c571a3e984 | ||
| 
						 | 
					e55988bb60 | ||
| 
						 | 
					34b5ba3b60 | ||
| 
						 | 
					629ac4b4ca | ||
| 
						 | 
					75f0bc4f44 | ||
| 
						 | 
					71a2440ee5 | ||
| 
						 | 
					04e40739f7 | ||
| 
						 | 
					48bcdad0d5 | ||
| 
						 | 
					f7d2402cab | ||
| 
						 | 
					808f55351a | ||
| 
						 | 
					c06271bc35 | ||
| 
						 | 
					92e5882aca | ||
| 
						 | 
					afa0580cd5 | ||
| 
						 | 
					4baee3031c | ||
| 
						 | 
					db7a72b224 | ||
| 
						 | 
					b71e69ad8e | ||
| 
						 | 
					f856173c43 | ||
| 
						 | 
					d742f9ebbd | ||
| 
						 | 
					36dd4cba3d | ||
| 
						 | 
					3978429ad5 | ||
| 
						 | 
					885945d6e1 | ||
| 
						 | 
					e22e770147 | ||
| 
						 | 
					e0c0203341 | ||
| 
						 | 
					e1eec61e26 | ||
| 
						 | 
					296fa128c9 | ||
| 
						 | 
					6dde222aae | ||
| 
						 | 
					391ac37018 | ||
| 
						 | 
					8d038a08fb | ||
| 
						 | 
					747c6ffda4 | ||
| 
						 | 
					d4cddc54f0 | ||
| 
						 | 
					eb7112c18e | ||
| 
						 | 
					fef9e07930 | ||
| 
						 | 
					8ab27e6ef7 | ||
| 
						 | 
					6415055590 | ||
| 
						 | 
					556e27b14f | ||
| 
						 | 
					af0c009d70 | ||
| 
						 | 
					0b1cf4a139 | ||
| 
						 | 
					a9101cdcaa | ||
| 
						 | 
					e351e2a7cf | ||
| 
						 | 
					215276243d | ||
| 
						 | 
					ddb7832852 | ||
| 
						 | 
					2fad41d155 | ||
| 
						 | 
					b9c3d9168f | ||
| 
						 | 
					4f2fc3c2dd | ||
| 
						 | 
					48819f4d54 | ||
| 
						 | 
					b0cbdd3eba | ||
| 
						 | 
					5016107550 | ||
| 
						 | 
					25d5d15fd5 | ||
| 
						 | 
					725713f74a | ||
| 
						 | 
					73eb0972cf | ||
| 
						 | 
					6720779c7e | ||
| 
						 | 
					b2a2c6af2a | ||
| 
						 | 
					272993bac4 | ||
| 
						 | 
					58532ae047 | ||
| 
						 | 
					4e7f6d380d | ||
| 
						 | 
					f0be325f88 | ||
| 
						 | 
					b66af23aa9 | ||
| 
						 | 
					29d0c13e97 | ||
| 
						 | 
					8a4e81a269 | ||
| 
						 | 
					843fc7b681 | ||
| 
						 | 
					6dcb6bf1c1 | ||
| 
						 | 
					1061c3cb3c | ||
| 
						 | 
					0d0f15d8d1 | ||
| 
						 | 
					a72ce94213 | ||
| 
						 | 
					f71d59c70e | ||
| 
						 | 
					3309f8313c | ||
| 
						 | 
					6cc5f194a7 | ||
| 
						 | 
					096327a99a | ||
| 
						 | 
					cc10bcf25e | ||
| 
						 | 
					875ac0ec00 | ||
| 
						 | 
					bf240f063a | ||
| 
						 | 
					dd016b0570 | ||
| 
						 | 
					244788464a | ||
| 
						 | 
					a95808334e | ||
| 
						 | 
					b3cebd5acf | ||
| 
						 | 
					7b775145e4 | ||
| 
						 | 
					7183aa6b9d | ||
| 
						 | 
					eebefe35e7 | ||
| 
						 | 
					1db0bbdc76 | ||
| 
						 | 
					e643112dd8 | ||
| 
						 | 
					21c4b25959 | ||
| 
						 | 
					41cf2c3aef | ||
| 
						 | 
					0e3a930fb4 | ||
| 
						 | 
					0c214e0153 | ||
| 
						 | 
					6c61cfbe03 | ||
| 
						 | 
					2ee77d36a0 | ||
| 
						 | 
					24f441e0bb | ||
| 
						 | 
					740da44f20 | ||
| 
						 | 
					72033fde7b | ||
| 
						 | 
					9adf3fcf9a | ||
| 
						 | 
					65f7456652 | ||
| 
						 | 
					8794569a08 | ||
| 
						 | 
					f8731bc2fd | ||
| 
						 | 
					195d6bf760 | ||
| 
						 | 
					dacd94b9c8 | ||
| 
						 | 
					8070cb5f87 | ||
| 
						 | 
					f7d514f449 | ||
| 
						 | 
					6d50bce79f | ||
| 
						 | 
					3cf0a38b3e | ||
| 
						 | 
					91a1d08a4c | ||
| 
						 | 
					85e776885b | ||
| 
						 | 
					fc4015329f | ||
| 
						 | 
					6ec9ff83f3 | ||
| 
						 | 
					db45308477 | ||
| 
						 | 
					1c7c69a8a5 | ||
| 
						 | 
					24ad061037 | ||
| 
						 | 
					92f96fa721 | ||
| 
						 | 
					0d1e362363 | ||
| 
						 | 
					a0bf2c86ab | ||
| 
						 | 
					6a662a45f3 | ||
| 
						 | 
					24d0524f31 | ||
| 
						 | 
					c081817c95 | ||
| 
						 | 
					46a1f2487e | ||
| 
						 | 
					ac02a4b68a | ||
| 
						 | 
					4ba063d3c5 | ||
| 
						 | 
					e0e0818e4b | ||
| 
						 | 
					82a5049f6a | ||
| 
						 | 
					d027b75b73 | ||
| 
						 | 
					87421d3fc5 | ||
| 
						 | 
					87d14a3625 | ||
| 
						 | 
					cc0931e36b | ||
| 
						 | 
					22152d6885 | ||
| 
						 | 
					102bcbce8d | ||
| 
						 | 
					8655de423d | ||
| 
						 | 
					c4b2eb24b3 | ||
| 
						 | 
					03e3fbb702 | ||
| 
						 | 
					bc7ee385f5 | ||
| 
						 | 
					1e368ab08f | ||
| 
						 | 
					2c77c5c8db | ||
| 
						 | 
					1eb38c563f | ||
| 
						 | 
					fa657871ed | ||
| 
						 | 
					09dac71a45 | ||
| 
						 | 
					be70b3adce | ||
| 
						 | 
					6d12b1f82b | ||
| 
						 | 
					7116a41129 | ||
| 
						 | 
					7143acab25 | ||
| 
						 | 
					11d4086d8e | ||
| 
						 | 
					32cd1da62e | ||
| 
						 | 
					d430f56de6 | ||
| 
						 | 
					957ebe98fb | ||
| 
						 | 
					9d09fc8485 | ||
| 
						 | 
					8ea4531718 | ||
| 
						 | 
					881611678e | ||
| 
						 | 
					a3dc628d86 | ||
| 
						 | 
					3c159fc1a5 | ||
| 
						 | 
					6056afd223 | ||
| 
						 | 
					54db796991 | ||
| 
						 | 
					119e912a83 | ||
| 
						 | 
					f4a4a0fdc7 | ||
| 
						 | 
					9ad765173f | ||
| 
						 | 
					c8e3c1a9b5 | ||
| 
						 | 
					ae378b769a | ||
| 
						 | 
					4de4e35459 | ||
| 
						 | 
					5537a83e56 | ||
| 
						 | 
					c850d322a6 | ||
| 
						 | 
					b8be571868 | ||
| 
						 | 
					acd43bf38c | ||
| 
						 | 
					5eaf173647 | ||
| 
						 | 
					7890b562bc | ||
| 
						 | 
					7258d33794 | ||
| 
						 | 
					263979a2a3 | ||
| 
						 | 
					2c6d83354d | ||
| 
						 | 
					a188fc01fe | ||
| 
						 | 
					1948f9e042 | ||
| 
						 | 
					f7ffc3a6c9 | ||
| 
						 | 
					4d6af5c5d2 | ||
| 
						 | 
					efed63d783 | ||
| 
						 | 
					7e351bb560 | ||
| 
						 | 
					0067580321 | ||
| 
						 | 
					82e0073624 | ||
| 
						 | 
					7e541b1a7f | ||
| 
						 | 
					2ae47ddbc2 | ||
| 
						 | 
					3e8b8b8990 | ||
| 
						 | 
					05bbbe9204 | ||
| 
						 | 
					a073129293 | ||
| 
						 | 
					93fc0e0e40 | ||
| 
						 | 
					84f1c14396 | ||
| 
						 | 
					f10986bab4 | ||
| 
						 | 
					6cb5746b65 | ||
| 
						 | 
					0061aa9f32 | ||
| 
						 | 
					3926bbcf6d | ||
| 
						 | 
					b5cee977c2 | ||
| 
						 | 
					ae3b60ba99 | ||
| 
						 | 
					d4ba6424a1 | ||
| 
						 | 
					92a97e52a0 | ||
| 
						 | 
					78dcaa0609 | ||
| 
						 | 
					65b4c34d86 | ||
| 
						 | 
					d8486c312c | ||
| 
						 | 
					8d4baaf2f0 | ||
| 
						 | 
					50fb940f05 | ||
| 
						 | 
					63e3676e68 | ||
| 
						 | 
					1dac2cae68 | ||
| 
						 | 
					d886975835 | ||
| 
						 | 
					22872a5363 | ||
| 
						 | 
					82b6b541b1 | ||
| 
						 | 
					60a989a76e | ||
| 
						 | 
					18394ed50f | ||
| 
						 | 
					3416d11926 | ||
| 
						 | 
					c1f1a03d0c | ||
| 
						 | 
					278a447ee8 | ||
| 
						 | 
					8ceee689c7 | ||
| 
						 | 
					356f164f52 | ||
| 
						 | 
					203ef9988c | ||
| 
						 | 
					9f51bdae00 | ||
| 
						 | 
					59c4f46f0f | ||
| 
						 | 
					f9ab6255e7 | ||
| 
						 | 
					a89b665b9b | ||
| 
						 | 
					a7949b8da3 | ||
| 
						 | 
					b0b4adc3af | ||
| 
						 | 
					6e19895972 | ||
| 
						 | 
					d24f1cbf35 | ||
| 
						 | 
					b8febed96a | ||
| 
						 | 
					82687bb4c3 | ||
| 
						 | 
					6506b7754a | ||
| 
						 | 
					2eb8e5e62a | ||
| 
						 | 
					c713a4c04d | ||
| 
						 | 
					0cefa0f942 | ||
| 
						 | 
					834c85ef0c | ||
| 
						 | 
					0c8c8eab58 | ||
| 
						 | 
					bc06baca76 | ||
| 
						 | 
					9eeb779e8f | ||
| 
						 | 
					fe171f9c3e | ||
| 
						 | 
					5e613d5411 | ||
| 
						 | 
					56e930eb03 | ||
| 
						 | 
					4a052f0bb9 | ||
| 
						 | 
					f34e79f27b | ||
| 
						 | 
					ef1fe9094c | ||
| 
						 | 
					c25e8ee9b3 | ||
| 
						 | 
					4525a048ec | ||
| 
						 | 
					f421a52f56 | ||
| 
						 | 
					17a79eec0c | ||
| 
						 | 
					1eda14b44f | ||
| 
						 | 
					aa9b502619 | ||
| 
						 | 
					aaf45e6464 | ||
| 
						 | 
					be83c31cdd | ||
| 
						 | 
					76a41eec2b | ||
| 
						 | 
					ab9c0ec9fc | ||
| 
						 | 
					cf6a1dea19 | ||
| 
						 | 
					ea5b3f5e62 | ||
| 
						 | 
					c3c658e1c0 | ||
| 
						 | 
					5d013b6b32 | ||
| 
						 | 
					ee91323f52 | ||
| 
						 | 
					4fae868811 | ||
| 
						 | 
					354f92d66a | ||
| 
						 | 
					c3484e0268 | ||
| 
						 | 
					6b0be9c73d | ||
| 
						 | 
					02312a91ca | ||
| 
						 | 
					744f6b648e | ||
| 
						 | 
					f1502a491e | ||
| 
						 | 
					b70871b675 | ||
| 
						 | 
					9de450b545 | ||
| 
						 | 
					cc53036744 | ||
| 
						 | 
					4610d8dc00 | ||
| 
						 | 
					5d7dfefe82 | ||
| 
						 | 
					5e8e7054f7 | ||
| 
						 | 
					9a542ea01d | ||
| 
						 | 
					1939f83709 | ||
| 
						 | 
					b7c114f044 | ||
| 
						 | 
					ede1351997 | ||
| 
						 | 
					7786ed6a64 | ||
| 
						 | 
					bdd08277b8 | ||
| 
						 | 
					2bf4faa7e4 | ||
| 
						 | 
					2e5e604b0c | ||
| 
						 | 
					ed4cd027f3 | ||
| 
						 | 
					bab19a2ac2 | ||
| 
						 | 
					582eb96d15 | ||
| 
						 | 
					2649ce1ebc | ||
| 
						 | 
					7070cdba4e | ||
| 
						 | 
					e885de28b1 | ||
| 
						 | 
					3038649ab2 | ||
| 
						 | 
					3e4da3f7cb | ||
| 
						 | 
					53b5d04715 | ||
| 
						 | 
					defede6080 | ||
| 
						 | 
					1472f1427e | ||
| 
						 | 
					00d1ecb1da | ||
| 
						 | 
					739e0e934a | ||
| 
						 | 
					6ae9770d34 | ||
| 
						 | 
					bec7184768 | ||
| 
						 | 
					442ac8d259 | ||
| 
						 | 
					657b02d0cf | ||
| 
						 | 
					b50ef8b216 | ||
| 
						 | 
					1b690c1a8b | ||
| 
						 | 
					2873a53f5f | ||
| 
						 | 
					04a781e844 | ||
| 
						 | 
					68be98d1a6 | ||
| 
						 | 
					0bbbadf3f5 | ||
| 
						 | 
					c0c1ce125a | ||
| 
						 | 
					105861186f | ||
| 
						 | 
					4a9d335bb4 | ||
| 
						 | 
					162f1e08f8 | ||
| 
						 | 
					0484ff5ec1 | ||
| 
						 | 
					4acc2fed6c | ||
| 
						 | 
					0369804ffa | ||
| 
						 | 
					33d7b5ec07 | ||
| 
						 | 
					4b38f35e72 | ||
| 
						 | 
					82c2773423 | ||
| 
						 | 
					ded27f709c | ||
| 
						 | 
					30dc3e112b | ||
| 
						 | 
					371b262f96 | ||
| 
						 | 
					b3fb2492d5 | ||
| 
						 | 
					93b810637b | ||
| 
						 | 
					cc62974182 | ||
| 
						 | 
					9413788571 | ||
| 
						 | 
					e8387db0c4 | ||
| 
						 | 
					81f28ca567 | ||
| 
						 | 
					1b32943215 | ||
| 
						 | 
					a231d99d4c | ||
| 
						 | 
					714044cc03 | ||
| 
						 | 
					5598b99fb3 | ||
| 
						 | 
					6899d9bbf6 | ||
| 
						 | 
					cf876a9893 | ||
| 
						 | 
					8b8a2928af | ||
| 
						 | 
					031774468c | ||
| 
						 | 
					dd28d12add | ||
| 
						 | 
					6c61ee8fe3 | ||
| 
						 | 
					b86ebb55ff | ||
| 
						 | 
					66956eaba3 | ||
| 
						 | 
					444ff35029 | ||
| 
						 | 
					ff2549be1d | ||
| 
						 | 
					2557c6a812 | ||
| 
						 | 
					aae48de0f7 | ||
| 
						 | 
					766708f24b | ||
| 
						 | 
					fbeb4a9d15 | ||
| 
						 | 
					24fc4f656c | ||
| 
						 | 
					c3c3b28818 | ||
| 
						 | 
					06e2670a57 | ||
| 
						 | 
					3798a4d059 | ||
| 
						 | 
					5b8246d6eb | ||
| 
						 | 
					2e24bc421d | ||
| 
						 | 
					f244ed3ed2 | ||
| 
						 | 
					50a095ed16 | ||
| 
						 | 
					37aff2199e | ||
| 
						 | 
					309aa5fbf3 | ||
| 
						 | 
					5f40948714 | ||
| 
						 | 
					c22050be29 | ||
| 
						 | 
					54ca55fd81 | ||
| 
						 | 
					d0e79d7e2c | ||
| 
						 | 
					c1003dfd15 | ||
| 
						 | 
					98809a1458 | ||
| 
						 | 
					ccc3df8c33 | ||
| 
						 | 
					593a6dbe19 | ||
| 
						 | 
					efbe446f1a | ||
| 
						 | 
					725745d105 | ||
| 
						 | 
					c0e94f8292 | ||
| 
						 | 
					ef4bd0167c | ||
| 
						 | 
					7a8a3ef4f6 | ||
| 
						 | 
					98c7b0367d | ||
| 
						 | 
					9e5dea0ffd | ||
| 
						 | 
					cb4823fdd6 | ||
| 
						 | 
					17bb051628 | ||
| 
						 | 
					59f44e810b | ||
| 
						 | 
					7a014dceb6 | ||
| 
						 | 
					1ff44a99a4 | ||
| 
						 | 
					6cf61614e4 | ||
| 
						 | 
					82e448b92b | ||
| 
						 | 
					b172352b52 | ||
| 
						 | 
					95b14fd803 | ||
| 
						 | 
					553d2e3280 | ||
| 
						 | 
					82fb4ee89d | ||
| 
						 | 
					389fef6c9c | ||
| 
						 | 
					b6622f9623 | ||
| 
						 | 
					7f5448e3a8 | ||
| 
						 | 
					5d965f0783 | ||
| 
						 | 
					b14713c231 | ||
| 
						 | 
					637e0ba420 | ||
| 
						 | 
					9ac37cb018 | ||
| 
						 | 
					fb7751b44f | ||
| 
						 | 
					e333a8d673 | ||
| 
						 | 
					89a6daac00 | ||
| 
						 | 
					7e42945918 | ||
| 
						 | 
					b61a87b26c | ||
| 
						 | 
					2c6b141931 | ||
| 
						 | 
					af13c50d51 | ||
| 
						 | 
					65c2397fce | ||
| 
						 | 
					16e7efe3c8 | ||
| 
						 | 
					c2b78c31d6 | ||
| 
						 | 
					a1dc0336dd | ||
| 
						 | 
					d99a35f275 | ||
| 
						 | 
					949fbf073a | ||
| 
						 | 
					6156be4da3 | ||
| 
						 | 
					d7d4325655 | ||
| 
						 | 
					9f81ffe433 | ||
| 
						 | 
					8164930816 | ||
| 
						 | 
					2a8834cf89 | ||
| 
						 | 
					e6e11f4ec3 | ||
| 
						 | 
					452e41562c | ||
| 
						 | 
					8c6dd96aed | ||
| 
						 | 
					23a4ccd178 | ||
| 
						 | 
					2b4d877a27 | ||
| 
						 | 
					d916f92d6f | ||
| 
						 | 
					b9b5134e19 | ||
| 
						 | 
					9ef6fdab63 | ||
| 
						 | 
					3a0b6de4d0 | ||
| 
						 | 
					08896dc0bd | ||
| 
						 | 
					ef62799783 | ||
| 
						 | 
					8196257f00 | ||
| 
						 | 
					ac923d3377 | ||
| 
						 | 
					0ec529ac82 | ||
| 
						 | 
					d5b0c872d8 | ||
| 
						 | 
					2e8026b65a | ||
| 
						 | 
					381a9f04a0 | ||
| 
						 | 
					d7050b4424 | ||
| 
						 | 
					91ca332058 | ||
| 
						 | 
					ff095a8ac8 | ||
| 
						 | 
					ae37f9f3a2 | ||
| 
						 | 
					95d66bd867 | ||
| 
						 | 
					6d73e9d8e8 | ||
| 
						 | 
					fb5a4bbaa7 | ||
| 
						 | 
					d402f6b66f | ||
| 
						 | 
					36a38a7a27 | ||
| 
						 | 
					2a4dc7e505 | ||
| 
						 | 
					4e92353d23 | ||
| 
						 | 
					0badc909ae | ||
| 
						 | 
					3cc52ee97a | ||
| 
						 | 
					822da9ccc3 | ||
| 
						 | 
					96e20179e4 | ||
| 
						 | 
					1dfa26bd84 | ||
| 
						 | 
					9e6c97703c | ||
| 
						 | 
					a0f6e0c1e7 | ||
| 
						 | 
					edaa7a599a | ||
| 
						 | 
					3b95629db1 | ||
| 
						 | 
					afff063a14 | ||
| 
						 | 
					e1246e1ad7 | ||
| 
						 | 
					df0b451d91 | ||
| 
						 | 
					07cb0a82d1 | ||
| 
						 | 
					f2671f8ac4 | ||
| 
						 | 
					43e9e1a160 | ||
| 
						 | 
					d0969d24cf | ||
| 
						 | 
					cf51a0dccb | ||
| 
						 | 
					48b30bf0e2 | ||
| 
						 | 
					17b08b6a64 | ||
| 
						 | 
					197ab47bdd | ||
| 
						 | 
					e8cce0babe | ||
| 
						 | 
					11d655ef40 | ||
| 
						 | 
					1da61e8051 | ||
| 
						 | 
					da6ce18279 | ||
| 
						 | 
					98f43a173b | ||
| 
						 | 
					c202eda634 | ||
| 
						 | 
					f78bcb8945 | ||
| 
						 | 
					2a918d4cc0 | ||
| 
						 | 
					2c83b24cad | ||
| 
						 | 
					e75445f688 | ||
| 
						 | 
					df51d79ec4 | ||
| 
						 | 
					c21a427a14 | ||
| 
						 | 
					c6e4ef2c6e | ||
| 
						 | 
					6450908a35 | ||
| 
						 | 
					a91cb2103d | ||
| 
						 | 
					3acd3158e9 | ||
| 
						 | 
					8a04c6f894 | ||
| 
						 | 
					745565c69f | ||
| 
						 | 
					fbc4a24633 | ||
| 
						 | 
					4775a89760 | ||
| 
						 | 
					3008a7d819 | ||
| 
						 | 
					233f758523 | ||
| 
						 | 
					3af16cf694 | ||
| 
						 | 
					985b5ee735 | ||
| 
						 | 
					4df7ade829 | ||
| 
						 | 
					932858d5f9 | ||
| 
						 | 
					c4b3503b4b | ||
| 
						 | 
					f871545f7f | ||
| 
						 | 
					136b5dc7c7 | ||
| 
						 | 
					759b287f15 | ||
| 
						 | 
					5fffb5b3d9 | ||
| 
						 | 
					17620eec4c | ||
| 
						 | 
					059230b320 | ||
| 
						 | 
					19dac35e5f | ||
| 
						 | 
					f5fe2a9f6c | ||
| 
						 | 
					d36e9d160b | ||
| 
						 | 
					e58e78cab2 | ||
| 
						 | 
					b0080e3817 | ||
| 
						 | 
					4d67d79273 | ||
| 
						 | 
					83ece9f028 | ||
| 
						 | 
					cec136c30d | ||
| 
						 | 
					ded8aff2c8 | ||
| 
						 | 
					76a268a43f | ||
| 
						 | 
					6563b02980 | ||
| 
						 | 
					32d4496c1e | ||
| 
						 | 
					0b26e53c59 | ||
| 
						 | 
					7cf69ed544 | ||
| 
						 | 
					8b634ba029 | ||
| 
						 | 
					526228b78e | ||
| 
						 | 
					34d01a3b20 | ||
| 
						 | 
					856f3005de | ||
| 
						 | 
					6e2a14002e | ||
| 
						 | 
					7852c6b075 | ||
| 
						 | 
					2c5f3606d1 | ||
| 
						 | 
					1649489834 | ||
| 
						 | 
					b51291cba8 | ||
| 
						 | 
					b29b576957 | ||
| 
						 | 
					abe389fd28 | ||
| 
						 | 
					e7e7f5de4b | ||
| 
						 | 
					3dfa7416cd | ||
| 
						 | 
					d733ef7a69 | ||
| 
						 | 
					17e01d24bb | ||
| 
						 | 
					f67f815624 | ||
| 
						 | 
					ab8fe43fa2 | ||
| 
						 | 
					5e4c2225ed | ||
| 
						 | 
					167d2a1411 | ||
| 
						 | 
					3f4802a14e | ||
| 
						 | 
					9aecc3e5ff | ||
| 
						 | 
					b8a4a5bcba | ||
| 
						 | 
					6daac534d7 | ||
| 
						 | 
					79649d380e | ||
| 
						 | 
					51ebaa9f82 | ||
| 
						 | 
					efaa569c3b | ||
| 
						 | 
					15684f58c2 | ||
| 
						 | 
					0e6c24ae4b | ||
| 
						 | 
					0dc1b3c1fb | ||
| 
						 | 
					1e53b797f6 | ||
| 
						 | 
					1ddf691244 | ||
| 
						 | 
					78074baadd | ||
| 
						 | 
					7457642b8c | ||
| 
						 | 
					d1e107702b | ||
| 
						 | 
					19503ca653 | ||
| 
						 | 
					14089b1d0f | ||
| 
						 | 
					0b8eca58b9 | ||
| 
						 | 
					c2f425a06a | ||
| 
						 | 
					4930f8bbd9 | ||
| 
						 | 
					a5668db68b | ||
| 
						 | 
					996b80f990 | ||
| 
						 | 
					1998f60546 | ||
| 
						 | 
					13a4808ca4 | ||
| 
						 | 
					a176be48a2 | ||
| 
						 | 
					f47bce27e3 | ||
| 
						 | 
					f86d65110d | ||
| 
						 | 
					4730ea8a38 | ||
| 
						 | 
					3e82dfdf2d | ||
| 
						 | 
					b7d0d35a13 | ||
| 
						 | 
					e12ceb2c92 | ||
| 
						 | 
					e8d23950a0 | ||
| 
						 | 
					d7c86198d9 | ||
| 
						 | 
					76428da729 | ||
| 
						 | 
					6bf4ca0840 | ||
| 
						 | 
					efa59b8d59 | ||
| 
						 | 
					e1a2bfaaa6 | ||
| 
						 | 
					48f48d96ce | ||
| 
						 | 
					085cb7cac0 | ||
| 
						 | 
					9874ff33c3 | ||
| 
						 | 
					73cfd9cce9 | ||
| 
						 | 
					3166d16f06 | ||
| 
						 | 
					26b82246b1 | ||
| 
						 | 
					277ba3ebd2 | ||
| 
						 | 
					3e9b2042d9 | ||
| 
						 | 
					5d577d7eb0 | ||
| 
						 | 
					05ee0523c1 | ||
| 
						 | 
					43f392c9a1 | ||
| 
						 | 
					01cb2049e3 | ||
| 
						 | 
					a224fe14e9 | ||
| 
						 | 
					00d5a5ff55 | ||
| 
						 | 
					420312cec5 | ||
| 
						 | 
					3c17fa3325 | ||
| 
						 | 
					e3424084a0 | ||
| 
						 | 
					d9a55422c7 | ||
| 
						 | 
					374941f727 | ||
| 
						 | 
					caeb429055 | ||
| 
						 | 
					b00c36e366 | ||
| 
						 | 
					1f9a128519 | ||
| 
						 | 
					18df6b30b1 | ||
| 
						 | 
					0d399f97dd | ||
| 
						 | 
					3fdc2c906d | ||
| 
						 | 
					a78ded0b61 | ||
| 
						 | 
					0a629ddbd6 | ||
| 
						 | 
					353cb367e4 | ||
| 
						 | 
					6252f3bc7c | ||
| 
						 | 
					4e319926d7 | ||
| 
						 | 
					e4f456918f | ||
| 
						 | 
					c342341ea1 | ||
| 
						 | 
					9d396bee8e | ||
| 
						 | 
					a9427c2536 | ||
| 
						 | 
					7a746ecf3e | ||
| 
						 | 
					aca8bf43ce | ||
| 
						 | 
					7de0df694f | ||
| 
						 | 
					15d3cd4680 | ||
| 
						 | 
					da4fb3cb39 | ||
| 
						 | 
					e10051ef3f | ||
| 
						 | 
					c60dca1f95 | ||
| 
						 | 
					188abf7e2a | ||
| 
						 | 
					f021b7cca6 | ||
| 
						 | 
					c126b73a4a | ||
| 
						 | 
					3f03b3569d | ||
| 
						 | 
					07dd3bfcd4 | ||
| 
						 | 
					37afdc953e | ||
| 
						 | 
					044855e146 | ||
| 
						 | 
					12379c82ba | ||
| 
						 | 
					be98d6b9ad | ||
| 
						 | 
					910b484975 | ||
| 
						 | 
					1fde5b65c6 | ||
| 
						 | 
					c40bc0b11f | ||
| 
						 | 
					7a0c01b41a | ||
| 
						 | 
					6fe9c925d2 | ||
| 
						 | 
					1ebdc48d5a | ||
| 
						 | 
					395a6c69bd | ||
| 
						 | 
					0d658ddf25 | ||
| 
						 | 
					cefa7ce284 | ||
| 
						 | 
					ee4041b8bd | ||
| 
						 | 
					a17f351b56 | ||
| 
						 | 
					4fcf8d8b07 | ||
| 
						 | 
					b7650eb21e | ||
| 
						 | 
					69120ad199 | ||
| 
						 | 
					1eee8a4226 | ||
| 
						 | 
					98448a53c8 | ||
| 
						 | 
					241d088156 | ||
| 
						 | 
					a22a8dd7dd | ||
| 
						 | 
					e26ad0c4fd | ||
| 
						 | 
					6e7559ac7f | ||
| 
						 | 
					9feda63955 | ||
| 
						 | 
					1ed81ff731 | ||
| 
						 | 
					b2dc2e6dac | ||
| 
						 | 
					1b787fc04c | ||
| 
						 | 
					9a6401acdf | ||
| 
						 | 
					c40fcc1e40 | ||
| 
						 | 
					f908ca4db4 | ||
| 
						 | 
					72f6453c48 | ||
| 
						 | 
					eca7b90771 | ||
| 
						 | 
					7eb90ccefb | ||
| 
						 | 
					6ed534782f | ||
| 
						 | 
					1ee27238f7 | ||
| 
						 | 
					59689735a6 | ||
| 
						 | 
					1be16287ee | ||
| 
						 | 
					9fe4b73d97 | ||
| 
						 | 
					73cb37295d | ||
| 
						 | 
					1f35508ae6 | ||
| 
						 | 
					3e2a74c294 | ||
| 
						 | 
					a34922c476 | ||
| 
						 | 
					84be7091fd | ||
| 
						 | 
					f82c1f0dd8 | ||
| 
						 | 
					dc0cb7e74f | ||
| 
						 | 
					ab31dbc482 | ||
| 
						 | 
					36e9d3ee91 | ||
| 
						 | 
					cc8c0f6b46 | ||
| 
						 | 
					3eac70a356 | ||
| 
						 | 
					5f3ad8f82c | ||
| 
						 | 
					367316c723 | ||
| 
						 | 
					d34353cc91 | ||
| 
						 | 
					6287fa5396 | ||
| 
						 | 
					a00c3c4019 | ||
| 
						 | 
					f4677b7960 | ||
| 
						 | 
					92308905dd | ||
| 
						 | 
					6f32fc5c4e | ||
| 
						 | 
					e607e731eb | ||
| 
						 | 
					f17c45611e | ||
| 
						 | 
					1ff7b6492b | ||
| 
						 | 
					20900d6801 | ||
| 
						 | 
					4b253d904d | ||
| 
						 | 
					a51c8c64e0 | ||
| 
						 | 
					c153422388 | ||
| 
						 | 
					7f065cfdbd | ||
| 
						 | 
					667fbc0847 | ||
| 
						 | 
					6ba7bd5697 | ||
| 
						 | 
					2cad035c01 | ||
| 
						 | 
					2a76c68842 | ||
| 
						 | 
					1b00f4bc37 | ||
| 
						 | 
					be62eb6d93 | ||
| 
						 | 
					5f3878f1e3 | ||
| 
						 | 
					a523e997d3 | ||
| 
						 | 
					fe43caa4a4 | ||
| 
						 | 
					792e614144 | ||
| 
						 | 
					ce2b87d88a | ||
| 
						 | 
					f092a073a7 | ||
| 
						 | 
					6fa4cd7136 | ||
| 
						 | 
					505ed2b076 | ||
| 
						 | 
					cef3e62d2b | ||
| 
						 | 
					40ea9ff9e8 | ||
| 
						 | 
					a97a6b03bc | ||
| 
						 | 
					516f76fd2c | ||
| 
						 | 
					5a02ac6e5b | ||
| 
						 | 
					14d4074ee1 | ||
| 
						 | 
					d9f16c405c | ||
| 
						 | 
					bfc6482a7a | ||
| 
						 | 
					5aa032033e | ||
| 
						 | 
					2d59f9938f | ||
| 
						 | 
					c0ce8fe755 | ||
| 
						 | 
					55eff40084 | ||
| 
						 | 
					e5a251843d | ||
| 
						 | 
					fe46b0de29 | ||
| 
						 | 
					a581439bb1 | ||
| 
						 | 
					a43337e8c4 | ||
| 
						 | 
					33c51ec143 | ||
| 
						 | 
					448da15fbf | ||
| 
						 | 
					a1bb2d6c2f | ||
| 
						 | 
					81dde5e8fe | ||
| 
						 | 
					b84e441861 | ||
| 
						 | 
					08e012bbec | ||
| 
						 | 
					b46acc392b | ||
| 
						 | 
					28af6367b8 | ||
| 
						 | 
					2c17b493b1 | ||
| 
						 | 
					ea725a66c9 | ||
| 
						 | 
					1532493dab | ||
| 
						 | 
					3795297af8 | ||
| 
						 | 
					33fd33d423 | ||
| 
						 | 
					4e98f8863f | ||
| 
						 | 
					582ef3dbdb | ||
| 
						 | 
					6a933782fa | ||
| 
						 | 
					d1c2778e93 | ||
| 
						 | 
					8d64abacc6 | ||
| 
						 | 
					9af6802943 | ||
| 
						 | 
					c10f53a897 | ||
| 
						 | 
					2124e869a8 | ||
| 
						 | 
					3b668eedda | ||
| 
						 | 
					7471431322 | ||
| 
						 | 
					1542de4eed | ||
| 
						 | 
					b6c2bffbdf | ||
| 
						 | 
					ff09931e22 | ||
| 
						 | 
					155c70b882 | ||
| 
						 | 
					7c49452973 | ||
| 
						 | 
					312539ae9f | ||
| 
						 | 
					cc40dcce58 | ||
| 
						 | 
					5790921aea | ||
| 
						 | 
					df84c11407 | ||
| 
						 | 
					b76306c983 | ||
| 
						 | 
					cdffc716c9 | ||
| 
						 | 
					5dffc13f55 | ||
| 
						 | 
					a5873a8d3d | ||
| 
						 | 
					4db3e88459 | ||
| 
						 | 
					ab073bad4f | ||
| 
						 | 
					cfe04f607d | ||
| 
						 | 
					c0e9f540e0 | ||
| 
						 | 
					7c97aacbe8 | ||
| 
						 | 
					36b8f87566 | ||
| 
						 | 
					d875413a0b | ||
| 
						 | 
					155ad6d219 | ||
| 
						 | 
					138f20433e | ||
| 
						 | 
					7747c67861 | ||
| 
						 | 
					237a6f06b6 | ||
| 
						 | 
					fe99beb82a | ||
| 
						 | 
					736a77f275 | ||
| 
						 | 
					94539213a1 | ||
| 
						 | 
					c5c4246319 | ||
| 
						 | 
					2e6d8a8991 | ||
| 
						 | 
					e852835da6 | ||
| 
						 | 
					d245c32529 | ||
| 
						 | 
					964d58bcb0 | ||
| 
						 | 
					52702f6f92 | ||
| 
						 | 
					05794d983f | ||
| 
						 | 
					364f36f851 | ||
| 
						 | 
					9b809d6278 | ||
| 
						 | 
					bbefea3387 | ||
| 
						 | 
					d83dde6180 | ||
| 
						 | 
					63e1319d0f | ||
| 
						 | 
					8067d34b3a | ||
| 
						 | 
					e3f2860e73 | ||
| 
						 | 
					92eb44d238 | ||
| 
						 | 
					f4179bead4 | ||
| 
						 | 
					fced277486 | ||
| 
						 | 
					3d1be455ce | ||
| 
						 | 
					dee4d129cb | ||
| 
						 | 
					0067bd77a8 | ||
| 
						 | 
					d98904e5a7 | ||
| 
						 | 
					96a259e81e | ||
| 
						 | 
					59f3477b82 | ||
| 
						 | 
					f947b818bf | ||
| 
						 | 
					3fa1a444ce | ||
| 
						 | 
					a2dc9b6be2 | ||
| 
						 | 
					16349eeceb | ||
| 
						 | 
					aecf1c1f96 | ||
| 
						 | 
					4ea574fdf3 | ||
| 
						 | 
					cf8115deb0 | ||
| 
						 | 
					d25cbda074 | ||
| 
						 | 
					5d582fd516 | ||
| 
						 | 
					8ec86dcf04 | ||
| 
						 | 
					6d3b70c8da | ||
| 
						 | 
					0a4fda742b | ||
| 
						 | 
					3745e57bf9 | ||
| 
						 | 
					b7e7aa00de | ||
| 
						 | 
					1098fd48ce | ||
| 
						 | 
					393906d9be | ||
| 
						 | 
					446881468c | ||
| 
						 | 
					cfb95ba9f6 | ||
| 
						 | 
					c198c26226 | ||
| 
						 | 
					54d6ddba69 | ||
| 
						 | 
					1af12ff1d1 | ||
| 
						 | 
					bd72b8eca6 | ||
| 
						 | 
					200d00c854 | ||
| 
						 | 
					669b912dea | ||
| 
						 | 
					36a4a67b2b | ||
| 
						 | 
					3413424f01 | ||
| 
						 | 
					80fc840d89 | ||
| 
						 | 
					6455100f7a | ||
| 
						 | 
					b7c8b4fc95 | ||
| 
						 | 
					f58d0f70b6 | ||
| 
						 | 
					8f59c61d1d | ||
| 
						 | 
					fd43ae3fe4 | ||
| 
						 | 
					cdd0f3b328 | ||
| 
						 | 
					f9f6f0e9f0 | ||
| 
						 | 
					405f382144 | ||
| 
						 | 
					a750273546 | ||
| 
						 | 
					ddc5f6f328 | ||
| 
						 | 
					4231b356aa | ||
| 
						 | 
					df1f7b4b02 | ||
| 
						 | 
					0b7545b239 | ||
| 
						 | 
					3a72137211 | ||
| 
						 | 
					e5d289cc03 | ||
| 
						 | 
					0ff3766b0e | ||
| 
						 | 
					3562202306 | ||
| 
						 | 
					2bf4b96aef | ||
| 
						 | 
					811e08a2c5 | ||
| 
						 | 
					dd6e90465d | ||
| 
						 | 
					a86c626802 | ||
| 
						 | 
					705c3dec2c | ||
| 
						 | 
					4afcee8b4b | ||
| 
						 | 
					9627017f9c | ||
| 
						 | 
					e0f6c15418 | ||
| 
						 | 
					ecc20b75f8 | ||
| 
						 | 
					540e455e3a | ||
| 
						 | 
					14748adb09 | ||
| 
						 | 
					ff2ab9e6bb | ||
| 
						 | 
					cc5cc3bb8f | ||
| 
						 | 
					1f3206216b | ||
| 
						 | 
					f113bb9f4e | ||
| 
						 | 
					4681147bb3 | ||
| 
						 | 
					52c3f232e4 | ||
| 
						 | 
					3dc466424e | ||
| 
						 | 
					353415cc81 | ||
| 
						 | 
					1a12ce8ea5 | ||
| 
						 | 
					0278e15fa3 | ||
| 
						 | 
					f01f085cb9 | ||
| 
						 | 
					bca68e90cc | ||
| 
						 | 
					a3f67ec18d | ||
| 
						 | 
					56ef1cbc40 | ||
| 
						 | 
					a1411093f0 | ||
| 
						 | 
					f35f7d9fbb | ||
| 
						 | 
					dfbf646ac4 | ||
| 
						 | 
					591371566e | ||
| 
						 | 
					5799b72178 | ||
| 
						 | 
					1cfe6842d5 | ||
| 
						 | 
					f4c98a6a3d | ||
| 
						 | 
					4aefb1dd98 | ||
| 
						 | 
					aa03989791 | ||
| 
						 | 
					a865b2c320 | ||
| 
						 | 
					694ce314a8 | ||
| 
						 | 
					94299a36a6 | ||
| 
						 | 
					3aaeb5c1e5 | ||
| 
						 | 
					80ec6cc806 | ||
| 
						 | 
					3d83320279 | ||
| 
						 | 
					4ab252d198 | ||
| 
						 | 
					058ffd7623 | ||
| 
						 | 
					0330a13aea | ||
| 
						 | 
					467325b81d | ||
| 
						 | 
					00f716bbe6 | ||
| 
						 | 
					2f2f032497 | ||
| 
						 | 
					feb200bbb3 | ||
| 
						 | 
					3894667036 | ||
| 
						 | 
					203ac694e3 | ||
| 
						 | 
					bb592c75e7 | ||
| 
						 | 
					777d717c40 | ||
| 
						 | 
					143d84590f | ||
| 
						 | 
					a29669d78d | ||
| 
						 | 
					e5be1e1696 | ||
| 
						 | 
					9e47c34729 | ||
| 
						 | 
					cb896f8923 | ||
| 
						 | 
					cec9bce126 | ||
| 
						 | 
					3f79793b7e | ||
| 
						 | 
					0d01d8a735 | ||
| 
						 | 
					2c0fa03dc6 | ||
| 
						 | 
					d3b3a6d389 | ||
| 
						 | 
					fc260b09a1 | ||
| 
						 | 
					b3c79a8a27 | ||
| 
						 | 
					f0ecefc0c0 | ||
| 
						 | 
					b0118409a9 | ||
| 
						 | 
					5f23288692 | ||
| 
						 | 
					45c58c7d10 | ||
| 
						 | 
					112591be76 | ||
| 
						 | 
					1b8daa3693 | ||
| 
						 | 
					1cdbc755ee | ||
| 
						 | 
					aa9c7e4b8c | ||
| 
						 | 
					6be69a168f | ||
| 
						 | 
					eaf76feeb6 | ||
| 
						 | 
					03e79ed05e | ||
| 
						 | 
					56bef2df4f | ||
| 
						 | 
					10d3886c51 | ||
| 
						 | 
					f1c0cf5b70 | ||
| 
						 | 
					2a7ac69ee4 | ||
| 
						 | 
					d13ea8e184 | ||
| 
						 | 
					1820b04bb2 | ||
| 
						 | 
					439b7ef463 | ||
| 
						 | 
					a25fb95bd6 | ||
| 
						 | 
					6168067160 | ||
| 
						 | 
					c3031a4610 | ||
| 
						 | 
					1099a94063 | ||
| 
						 | 
					812d8a176c | ||
| 
						 | 
					db533c96e3 | ||
| 
						 | 
					8831eb7624 | ||
| 
						 | 
					3c8f315021 | ||
| 
						 | 
					0f2e636602 | ||
| 
						 | 
					98bd148b1a | ||
| 
						 | 
					292248b8c2 | ||
| 
						 | 
					d3eef3e5af | ||
| 
						 | 
					c5fbf8c1ba | ||
| 
						 | 
					1ed2d8f512 | ||
| 
						 | 
					d140890259 | ||
| 
						 | 
					eb492df2bb | ||
| 
						 | 
					2c16e78400 | ||
| 
						 | 
					bf2b87aea3 | ||
| 
						 | 
					1dff425999 | ||
| 
						 | 
					501af5ba89 | ||
| 
						 | 
					31d6e7b7ba | ||
| 
						 | 
					b983322bfb | ||
| 
						 | 
					339654e163 | ||
| 
						 | 
					5ca48cc853 | ||
| 
						 | 
					79996e3335 | ||
| 
						 | 
					173acc185c | ||
| 
						 | 
					a985ecdd17 | ||
| 
						 | 
					fb4c24b6e7 | ||
| 
						 | 
					1366f6b9bd | ||
| 
						 | 
					e13546f739 | ||
| 
						 | 
					d6c813daff | ||
| 
						 | 
					e3818a4c4b | ||
| 
						 | 
					415fe2abe9 | ||
| 
						 | 
					5bbdaaf4b7 | ||
| 
						 | 
					bf1f1a5759 | ||
| 
						 | 
					8e42429c9d | ||
| 
						 | 
					c43c2285f6 | ||
| 
						 | 
					94b2c29f9d | ||
| 
						 | 
					090f931a35 | ||
| 
						 | 
					6b8be6da76 | ||
| 
						 | 
					7ec2d392e7 | ||
| 
						 | 
					e88f66bb49 | ||
| 
						 | 
					28a2759ab8 | ||
| 
						 | 
					3edad44d6e | ||
| 
						 | 
					9e7459fc5d | ||
| 
						 | 
					b98f5ef42b | ||
| 
						 | 
					a6d4f79f24 | ||
| 
						 | 
					efcb7a75fc | ||
| 
						 | 
					30aa23fea2 | ||
| 
						 | 
					c9e045041e | ||
| 
						 | 
					fd6fa9c0b2 | ||
| 
						 | 
					9f70d09275 | ||
| 
						 | 
					3fb0f01001 | ||
| 
						 | 
					216ac24bd3 | ||
| 
						 | 
					2035af2091 | ||
| 
						 | 
					19398a175a | ||
| 
						 | 
					fa369ddbe7 | ||
| 
						 | 
					294ba3c282 | ||
| 
						 | 
					2923e91a98 | ||
| 
						 | 
					7c52b7706f | ||
| 
						 | 
					ddec587581 | ||
| 
						 | 
					4f466f8e81 | ||
| 
						 | 
					1502cda142 | ||
| 
						 | 
					ce2b5d7574 | ||
| 
						 | 
					f1c65db80b | ||
| 
						 | 
					496970b233 | ||
| 
						 | 
					3b0e61a812 | ||
| 
						 | 
					e84b0d709b | ||
| 
						 | 
					16241f0ea4 | ||
| 
						 | 
					518af4e3ae | ||
| 
						 | 
					fe01f90a1c | ||
| 
						 | 
					99a376df16 | ||
| 
						 | 
					831ffcb705 | ||
| 
						 | 
					5f297c4504 | ||
| 
						 | 
					d7623ff9f3 | ||
| 
						 | 
					df9b5405e8 | ||
| 
						 | 
					180eb5b3c2 | ||
| 
						 | 
					af7d49aaff | ||
| 
						 | 
					187b655bc2 | ||
| 
						 | 
					8612cb9239 | ||
| 
						 | 
					b2f3fafa6a | ||
| 
						 | 
					483dab147d | ||
| 
						 | 
					f39b8e697c | ||
| 
						 | 
					7d610299c9 | ||
| 
						 | 
					25550b2dd4 | ||
| 
						 | 
					5c676c47cd | ||
| 
						 | 
					e77f9d5e78 | ||
| 
						 | 
					9c04747623 | ||
| 
						 | 
					e66deb6817 | ||
| 
						 | 
					cc9a645a02 | ||
| 
						 | 
					18fb9d807e | ||
| 
						 | 
					a1cc568288 | ||
| 
						 | 
					2ea3cd8abc | ||
| 
						 | 
					095db72024 | ||
| 
						 | 
					11eb172b6e | ||
| 
						 | 
					4b60f4b175 | ||
| 
						 | 
					0794f3a798 | ||
| 
						 | 
					2b8e7b5061 | ||
| 
						 | 
					6f57311da0 | ||
| 
						 | 
					98b09d3949 | ||
| 
						 | 
					231a737a82 | ||
| 
						 | 
					236860735e | ||
| 
						 | 
					ac1ef7ec72 | ||
| 
						 | 
					5f761514e1 | ||
| 
						 | 
					32f1f622f6 | ||
| 
						 | 
					5f95651316 | ||
| 
						 | 
					ccac657556 | ||
| 
						 | 
					a9c23ea079 | ||
| 
						 | 
					33ffe2a7f7 | ||
| 
						 | 
					7c717aafc6 | ||
| 
						 | 
					225aeb171e | ||
| 
						 | 
					ffe181c366 | ||
| 
						 | 
					fd4e79a9ed | ||
| 
						 | 
					299e174d2d | ||
| 
						 | 
					ce62fc6eae | ||
| 
						 | 
					43490dfb89 | ||
| 
						 | 
					a523276786 | ||
| 
						 | 
					074471ab0c | ||
| 
						 | 
					d761421e1d | ||
| 
						 | 
					2339c5d722 | ||
| 
						 | 
					dd00266757 | ||
| 
						 | 
					bb99ce5f80 | ||
| 
						 | 
					49f42ec0f6 | ||
| 
						 | 
					91d509f0d9 | ||
| 
						 | 
					d5e858c55f | ||
| 
						 | 
					fb8fcce2ac | ||
| 
						 | 
					d4736ae701 | ||
| 
						 | 
					3e1158522a | ||
| 
						 | 
					57191f86d9 | ||
| 
						 | 
					0a89c575de | ||
| 
						 | 
					4c860910df | ||
| 
						 | 
					0fc3d51b7d | ||
| 
						 | 
					c4b0d7879e | ||
| 
						 | 
					aab1ec3f36 | ||
| 
						 | 
					fbfa11fb29 | ||
| 
						 | 
					284498fcef | ||
| 
						 | 
					07d9808496 | ||
| 
						 | 
					4ab0088bfe | ||
| 
						 | 
					3bd1690bfb | ||
| 
						 | 
					29f4b05954 | ||
| 
						 | 
					48ca0c99b2 | ||
| 
						 | 
					015052cf7b | ||
| 
						 | 
					9ce3ee47ba | ||
| 
						 | 
					2e3fd54337 | ||
| 
						 | 
					625782f7ee | ||
| 
						 | 
					1c90899eef | ||
| 
						 | 
					4f2b7d48b1 | ||
| 
						 | 
					458c3900e1 | ||
| 
						 | 
					ba75b4e750 | ||
| 
						 | 
					ab011d51be | ||
| 
						 | 
					898d9b1a87 | ||
| 
						 | 
					4f9a9d2b79 | ||
| 
						 | 
					346f2f93e1 | ||
| 
						 | 
					25b0e072dd | ||
| 
						 | 
					dc13c882fb | ||
| 
						 | 
					12a52467c8 | ||
| 
						 | 
					22e6c73dcc | ||
| 
						 | 
					53b9696f3f | ||
| 
						 | 
					7e4fe4662b | ||
| 
						 | 
					18fd413f37 | ||
| 
						 | 
					80ed5f84de | ||
| 
						 | 
					b48111df7c | ||
| 
						 | 
					73e3edd70d | ||
| 
						 | 
					d4cfbdf2c0 | ||
| 
						 | 
					294f03a812 | ||
| 
						 | 
					272f9f3d27 | ||
| 
						 | 
					927a28ba3b | ||
| 
						 | 
					a938c4284e | ||
| 
						 | 
					7a44a0cee7 | ||
| 
						 | 
					82430309ac | ||
| 
						 | 
					c2079de880 | ||
| 
						 | 
					967ead7269 | ||
| 
						 | 
					c9255df519 | ||
| 
						 | 
					27c824a1c9 | ||
| 
						 | 
					5b96d1ccf9 | ||
| 
						 | 
					29c0866b38 | ||
| 
						 | 
					0214ea0dfe | ||
| 
						 | 
					80355002a1 | ||
| 
						 | 
					0e36825228 | ||
| 
						 | 
					95a8f1469f | ||
| 
						 | 
					afdbadc704 | ||
| 
						 | 
					004cc26abf | ||
| 
						 | 
					35a924c576 | ||
| 
						 | 
					99279ac97a | ||
| 
						 | 
					87605ca1e2 | ||
| 
						 | 
					7cc586f117 | ||
| 
						 | 
					c263a6092c | ||
| 
						 | 
					f92fd85400 | ||
| 
						 | 
					e71520ddd6 | ||
| 
						 | 
					275f34b5d2 | ||
| 
						 | 
					50fbb6ed36 | ||
| 
						 | 
					34fdacbd35 | ||
| 
						 | 
					77f2d20dbc | ||
| 
						 | 
					0dbfbf26cb | ||
| 
						 | 
					2863a6878f | ||
| 
						 | 
					ae46e91e4d | ||
| 
						 | 
					865a90eb4f | ||
| 
						 | 
					0269c4507c | ||
| 
						 | 
					a5d3574984 | ||
| 
						 | 
					1040deb0c5 | ||
| 
						 | 
					05ea800faf | ||
| 
						 | 
					341f87862c | ||
| 
						 | 
					f805d30769 | ||
| 
						 | 
					4fb9472cc2 | ||
| 
						 | 
					a8098740c6 | ||
| 
						 | 
					e3af0d041e | ||
| 
						 | 
					28cfda9f30 | ||
| 
						 | 
					a313e23fff | ||
| 
						 | 
					4d2a292e8a | ||
| 
						 | 
					5a84b7fc2d | ||
| 
						 | 
					d8e660a6dc | ||
| 
						 | 
					761f3b403b | ||
| 
						 | 
					4570d29404 | ||
| 
						 | 
					14346b3456 | ||
| 
						 | 
					769f58aaaa | ||
| 
						 | 
					a166e96d16 | ||
| 
						 | 
					8dd8ce1dc3 | ||
| 
						 | 
					4c5979a107 | ||
| 
						 | 
					649ab2dcfa | ||
| 
						 | 
					71fc9b37ae | ||
| 
						 | 
					283aedf498 | ||
| 
						 | 
					1a56614af2 | ||
| 
						 | 
					693c33e407 | ||
| 
						 | 
					d9a9aa027d | ||
| 
						 | 
					b22250bb67 | ||
| 
						 | 
					d446120527 | ||
| 
						 | 
					bb9d68489c | ||
| 
						 | 
					affaea59fe | ||
| 
						 | 
					81fc4c93ef | ||
| 
						 | 
					8957121c14 | ||
| 
						 | 
					50241bc84e | ||
| 
						 | 
					e7f077f1ba | ||
| 
						 | 
					c3b82c7610 | ||
| 
						 | 
					2c12e7f6f5 | ||
| 
						 | 
					8db10d9ac4 | ||
| 
						 | 
					c3cc4662af | ||
| 
						 | 
					22892f9803 | ||
| 
						 | 
					27eb115fb6 | ||
| 
						 | 
					51a596ef4f | ||
| 
						 | 
					97de8bd1e0 | ||
| 
						 | 
					1cb7e5be5b | ||
| 
						 | 
					84dd04e761 | ||
| 
						 | 
					2ac061e487 | ||
| 
						 | 
					7cdb81582c | ||
| 
						 | 
					8f33b40302 | ||
| 
						 | 
					e600614ef5 | ||
| 
						 | 
					02581dea1f | ||
| 
						 | 
					40ad08bcc2 | ||
| 
						 | 
					9c4456a13f | ||
| 
						 | 
					f4d0392faa | ||
| 
						 | 
					45ba6cfe03 | ||
| 
						 | 
					4f23a0c797 | ||
| 
						 | 
					f6c32bbf2b | ||
| 
						 | 
					d040c951f0 | ||
| 
						 | 
					69abfb0e33 | ||
| 
						 | 
					9a1daf8482 | ||
| 
						 | 
					9de6dc3af3 | ||
| 
						 | 
					248834dcaa | ||
| 
						 | 
					11a7da7c9f | ||
| 
						 | 
					9fea0b9937 | 
@@ -11,8 +11,10 @@ maketest.log
 | 
				
			|||||||
cctest
 | 
					cctest
 | 
				
			||||||
cctest.c
 | 
					cctest.c
 | 
				
			||||||
cctest.a
 | 
					cctest.a
 | 
				
			||||||
libcrypto.so.*
 | 
					 | 
				
			||||||
libssl.so.*
 | 
					 | 
				
			||||||
*.flc
 | 
					*.flc
 | 
				
			||||||
semantic.cache
 | 
					semantic.cache
 | 
				
			||||||
Makefile
 | 
					Makefile
 | 
				
			||||||
 | 
					*.so*
 | 
				
			||||||
 | 
					*.dll*
 | 
				
			||||||
 | 
					*.sl*
 | 
				
			||||||
 | 
					*.dylib*
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										77
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					# Object files
 | 
				
			||||||
 | 
					*.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# editor artefacts
 | 
				
			||||||
 | 
					*.swp
 | 
				
			||||||
 | 
					.#*
 | 
				
			||||||
 | 
					#*#
 | 
				
			||||||
 | 
					*~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Top level excludes
 | 
				
			||||||
 | 
					/Makefile.bak
 | 
				
			||||||
 | 
					/Makefile
 | 
				
			||||||
 | 
					/*.a
 | 
				
			||||||
 | 
					/include
 | 
				
			||||||
 | 
					/*.pc
 | 
				
			||||||
 | 
					/rehash.time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Most *.c files under test/ are symlinks
 | 
				
			||||||
 | 
					/test/*.c
 | 
				
			||||||
 | 
					# Apart from these
 | 
				
			||||||
 | 
					!/test/asn1test.c
 | 
				
			||||||
 | 
					!/test/methtest.c
 | 
				
			||||||
 | 
					!/test/dummytest.c
 | 
				
			||||||
 | 
					!/test/igetest.c
 | 
				
			||||||
 | 
					!/test/r160test.c
 | 
				
			||||||
 | 
					!/test/fips_algvs.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/test/*.ss
 | 
				
			||||||
 | 
					/test/*.srl
 | 
				
			||||||
 | 
					/test/.rnd
 | 
				
			||||||
 | 
					/test/test*.pem
 | 
				
			||||||
 | 
					/test/newkey.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Certificate symbolic links
 | 
				
			||||||
 | 
					*.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Links under apps
 | 
				
			||||||
 | 
					/apps/CA.pl
 | 
				
			||||||
 | 
					/apps/md4.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Auto generated headers
 | 
				
			||||||
 | 
					/crypto/buildinf.h
 | 
				
			||||||
 | 
					/crypto/opensslconf.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Auto generated assembly language source files
 | 
				
			||||||
 | 
					*.s
 | 
				
			||||||
 | 
					!/crypto/bn/asm/pa-risc2.s
 | 
				
			||||||
 | 
					!/crypto/bn/asm/pa-risc2W.s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Executables
 | 
				
			||||||
 | 
					/apps/openssl
 | 
				
			||||||
 | 
					/test/sha256t
 | 
				
			||||||
 | 
					/test/sha512t
 | 
				
			||||||
 | 
					/test/*test
 | 
				
			||||||
 | 
					/test/fips_aesavs
 | 
				
			||||||
 | 
					/test/fips_desmovs
 | 
				
			||||||
 | 
					/test/fips_dhvs
 | 
				
			||||||
 | 
					/test/fips_drbgvs
 | 
				
			||||||
 | 
					/test/fips_dssvs
 | 
				
			||||||
 | 
					/test/fips_ecdhvs
 | 
				
			||||||
 | 
					/test/fips_ecdsavs
 | 
				
			||||||
 | 
					/test/fips_rngvs
 | 
				
			||||||
 | 
					/test/fips_test_suite
 | 
				
			||||||
 | 
					*.so*
 | 
				
			||||||
 | 
					*.dylib*
 | 
				
			||||||
 | 
					*.dll*
 | 
				
			||||||
 | 
					# Exceptions
 | 
				
			||||||
 | 
					!/test/bctest
 | 
				
			||||||
 | 
					!/crypto/des/times/486-50.sol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc auto generated files
 | 
				
			||||||
 | 
					/tools/c_rehash
 | 
				
			||||||
 | 
					/test/evptests.txt
 | 
				
			||||||
 | 
					lib
 | 
				
			||||||
 | 
					Makefile.save
 | 
				
			||||||
 | 
					*.bak
 | 
				
			||||||
							
								
								
									
										25
									
								
								ACKNOWLEDGMENTS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								ACKNOWLEDGMENTS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					The OpenSSL project depends on volunteer efforts and financial support from
 | 
				
			||||||
 | 
					the end user community. That support comes in the form of donations and paid
 | 
				
			||||||
 | 
					sponsorships, software support contracts, paid consulting services
 | 
				
			||||||
 | 
					and commissioned software development.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since all these activities support the continued development and improvement
 | 
				
			||||||
 | 
					of OpenSSL we consider all these clients and customers as sponsors of the
 | 
				
			||||||
 | 
					OpenSSL project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We would like to identify and thank the following such sponsors for their past
 | 
				
			||||||
 | 
					or current significant support of the OpenSSL project:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Very significant support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						OpenGear: www.opengear.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Significant support:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PSW Group: www.psw.net
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please note that we ask permission to identify sponsors and that some sponsors
 | 
				
			||||||
 | 
					we consider eligible for inclusion here have requested to remain anonymous.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Additional sponsorship or financial support is always welcome: for more
 | 
				
			||||||
 | 
					information please contact the OpenSSL Software Foundation.
 | 
				
			||||||
@@ -1,163 +0,0 @@
 | 
				
			|||||||
This file, together with ChangeLog.0_9_7-stable_not-in-head_FIPS,
 | 
					 | 
				
			||||||
provides a collection of those CVS change log entries for the
 | 
					 | 
				
			||||||
0.9.7 branch (OpenSSL_0_9_7-stable) that do not appear similarly in
 | 
					 | 
				
			||||||
0.9.8-dev (CVS head).
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
ChangeLog.0_9_7-stable_not-in-head_FIPS  -  "FIPS" related changes
 | 
					 | 
				
			||||||
ChangeLog.0_9_7-stable_not-in-head       -  everything else
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Some obvious false positives have been eliminated: e.g., we do not
 | 
					 | 
				
			||||||
care about a simple "make update"; and we don't care about changes
 | 
					 | 
				
			||||||
identified to the 0.9.7 branch that were explicitly identified as
 | 
					 | 
				
			||||||
backports from head.
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
Eliminating all other entries (and finally this file and its
 | 
					 | 
				
			||||||
compantion), either as false positives or as things that should go
 | 
					 | 
				
			||||||
into 0.9.8, remains to be done.  Any additional changes to 0.9.7 that
 | 
					 | 
				
			||||||
are not immediately put into 0.9.8, but belong there as well, should
 | 
					 | 
				
			||||||
be added to the end of this file.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2002-11-04 17:33  levitte
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		Configure (1.314.2.38), "Exp", lines: +4 -2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Return my normal debug targets to something not so extreme, and
 | 
					 | 
				
			||||||
	make the extreme ones special (or 'extreme', if you will :-)).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2002-12-16 19:17  appro
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/bn/bn_lcl.h (1.23.2.3), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		crypto/bn/bn_mul.c (1.28.2.4), "Exp", lines: +84 -445
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	This is rollback to 0.9.6h bn_mul.c to address problem reported in
 | 
					 | 
				
			||||||
	RT#272.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-27 15:46  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/aes/aes.h (1.1.2.5), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		crypto/aes/aes_cfb.c (1.1.2.4), "Exp", lines: +57 -0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Add untested CFB-r mode. Will be tested soon.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-28 17:07  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		Makefile.org (1.154.2.69), "Exp", lines: +5 -1
 | 
					 | 
				
			||||||
		crypto/aes/aes.h (1.1.2.6), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		crypto/aes/aes_cfb.c (1.1.2.5), "Exp", lines: +19 -0
 | 
					 | 
				
			||||||
		crypto/dsa/Makefile.ssl (1.49.2.6), "Exp", lines: +3 -2
 | 
					 | 
				
			||||||
		crypto/err/Makefile.ssl (1.48.2.4), "Exp", lines: +17 -16
 | 
					 | 
				
			||||||
		crypto/evp/e_aes.c (1.6.2.5), "Exp", lines: +8 -0
 | 
					 | 
				
			||||||
		crypto/evp/e_des.c (1.5.2.2), "Exp", lines: +1 -1
 | 
					 | 
				
			||||||
		crypto/evp/e_des3.c (1.8.2.3), "Exp", lines: +2 -2
 | 
					 | 
				
			||||||
		crypto/evp/evp.h (1.86.2.11), "Exp", lines: +28 -11
 | 
					 | 
				
			||||||
		crypto/evp/evp_locl.h (1.7.2.3), "Exp", lines: +2 -2
 | 
					 | 
				
			||||||
		crypto/objects/obj_dat.h (1.49.2.13), "Exp", lines: +10 -5
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.h (1.19.2.13), "Exp", lines: +5 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.num (1.15.2.9), "Exp", lines: +1 -0
 | 
					 | 
				
			||||||
		crypto/objects/objects.txt (1.20.2.14), "Exp", lines: +4 -0
 | 
					 | 
				
			||||||
		fips/Makefile.ssl (1.1.2.3), "Exp", lines: +7 -0
 | 
					 | 
				
			||||||
		fips/aes/Makefile.ssl (1.1.2.2), "Exp", lines: +23 -1
 | 
					 | 
				
			||||||
		fips/aes/fips_aesavs.c (1.1.2.3), "Exp", lines: +9 -1
 | 
					 | 
				
			||||||
		test/Makefile.ssl (1.84.2.30), "Exp", lines: +101 -43
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Add support for partial CFB modes, make tests work, update
 | 
					 | 
				
			||||||
	dependencies.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-29 12:56  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/aes/aes_cfb.c (1.1.2.6), "Exp", lines: +9 -6
 | 
					 | 
				
			||||||
		crypto/evp/c_allc.c (1.8.2.3), "Exp", lines: +1 -0
 | 
					 | 
				
			||||||
		crypto/evp/evp_test.c (1.14.2.11), "Exp", lines: +17 -8
 | 
					 | 
				
			||||||
		crypto/evp/evptests.txt (1.9.2.2), "Exp", lines: +48 -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Working CFB1 and test vectors.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-29 15:24  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/evp/e_aes.c (1.6.2.6), "Exp", lines: +14 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_dat.h (1.49.2.14), "Exp", lines: +15 -5
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.h (1.19.2.14), "Exp", lines: +10 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.num (1.15.2.10), "Exp", lines: +2 -0
 | 
					 | 
				
			||||||
		crypto/objects/objects.txt (1.20.2.15), "Exp", lines: +2 -0
 | 
					 | 
				
			||||||
		fips/aes/Makefile.ssl (1.1.2.3), "Exp", lines: +1 -1
 | 
					 | 
				
			||||||
		fips/aes/fips_aesavs.c (1.1.2.4), "Exp", lines: +34 -19
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	The rest of the keysizes for CFB1, working AES AVS test for CFB1.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-29 19:05  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/aes/aes.h (1.1.2.7), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		crypto/aes/aes_cfb.c (1.1.2.7), "Exp", lines: +14 -0
 | 
					 | 
				
			||||||
		crypto/evp/c_allc.c (1.8.2.4), "Exp", lines: +1 -0
 | 
					 | 
				
			||||||
		crypto/evp/e_aes.c (1.6.2.7), "Exp", lines: +4 -9
 | 
					 | 
				
			||||||
		crypto/evp/evptests.txt (1.9.2.3), "Exp", lines: +48 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_dat.h (1.49.2.15), "Exp", lines: +20 -5
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.h (1.19.2.15), "Exp", lines: +15 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.num (1.15.2.11), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		crypto/objects/objects.txt (1.20.2.16), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		fips/aes/fips_aesavs.c (1.1.2.7), "Exp", lines: +11 -0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	AES CFB8.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-07-30 20:30  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		Makefile.org (1.154.2.70), "Exp", lines: +16 -5
 | 
					 | 
				
			||||||
		crypto/des/cfb_enc.c (1.7.2.1), "Exp", lines: +2 -1
 | 
					 | 
				
			||||||
		crypto/des/des_enc.c (1.11.2.2), "Exp", lines: +4 -0
 | 
					 | 
				
			||||||
		crypto/evp/e_aes.c (1.6.2.8), "Exp", lines: +7 -14
 | 
					 | 
				
			||||||
		crypto/evp/e_des.c (1.5.2.3), "Exp", lines: +37 -1
 | 
					 | 
				
			||||||
		crypto/evp/evp.h (1.86.2.12), "Exp", lines: +6 -0
 | 
					 | 
				
			||||||
		crypto/evp/evp_locl.h (1.7.2.4), "Exp", lines: +9 -0
 | 
					 | 
				
			||||||
		crypto/objects/obj_dat.h (1.49.2.16), "Exp", lines: +48 -23
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.h (1.19.2.16), "Exp", lines: +31 -6
 | 
					 | 
				
			||||||
		crypto/objects/obj_mac.num (1.15.2.12), "Exp", lines: +5 -0
 | 
					 | 
				
			||||||
		crypto/objects/objects.txt (1.20.2.17), "Exp", lines: +12 -6
 | 
					 | 
				
			||||||
		fips/Makefile.ssl (1.1.2.4), "Exp", lines: +8 -1
 | 
					 | 
				
			||||||
		fips/fips_make_sha1 (1.1.2.3), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		fips/aes/Makefile.ssl (1.1.2.4), "Exp", lines: +1 -1
 | 
					 | 
				
			||||||
		fips/des/.cvsignore (1.1.2.1), "Exp", lines: +3 -0
 | 
					 | 
				
			||||||
		fips/des/Makefile.ssl (1.1.2.1), "Exp", lines: +96 -0
 | 
					 | 
				
			||||||
		fips/des/fingerprint.sha1 (1.1.2.1), "Exp", lines: +2 -0
 | 
					 | 
				
			||||||
		fips/des/fips_des_enc.c (1.1.2.1), "Exp", lines: +288 -0
 | 
					 | 
				
			||||||
		fips/des/fips_des_locl.h (1.1.2.1), "Exp", lines: +428 -0
 | 
					 | 
				
			||||||
		fips/des/fips_desmovs.c (1.1.2.1), "Exp", lines: +659 -0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Whoops, forgot FIPS DES, also add EVPs for DES CFB1 and 8.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-08-01 12:25  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/des/cfb_enc.c (1.7.2.2), "Exp", lines: +45 -36
 | 
					 | 
				
			||||||
		crypto/evp/c_allc.c (1.8.2.5), "Exp", lines: +2 -0
 | 
					 | 
				
			||||||
		crypto/evp/e_des.c (1.5.2.4), "Exp", lines: +8 -3
 | 
					 | 
				
			||||||
		crypto/evp/evptests.txt (1.9.2.4), "Exp", lines: +6 -0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Fix DES CFB-r.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2003-08-01 12:31  ben
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		crypto/evp/evptests.txt (1.9.2.5), "Exp", lines: +4 -0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	DES CFB8 test.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2005-04-19 16:21  appro
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Changed:
 | 
					 | 
				
			||||||
		Configure (1.314.2.117), "Exp", lines: +24 -21
 | 
					 | 
				
			||||||
		Makefile.org (1.154.2.100), "Exp", lines: +1 -11
 | 
					 | 
				
			||||||
		TABLE (1.99.2.52), "Exp", lines: +20 -20
 | 
					 | 
				
			||||||
		apps/Makefile (1.1.4.15), "Exp", lines: +1 -1
 | 
					 | 
				
			||||||
		test/Makefile (1.1.4.12), "Exp", lines: +1 -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Enable shared link on HP-UX.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										313
									
								
								Configure
									
									
									
									
									
								
							
							
						
						
									
										313
									
								
								Configure
									
									
									
									
									
								
							@@ -12,7 +12,7 @@ print STDERR "Warning: perl module strict not found.\n" if ($@);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# see INSTALL for instructions.
 | 
					# see INSTALL for instructions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
 | 
					my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Options:
 | 
					# Options:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -56,6 +56,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 | 
				
			|||||||
# [no-]zlib     [don't] compile support for zlib compression.
 | 
					# [no-]zlib     [don't] compile support for zlib compression.
 | 
				
			||||||
# zlib-dynamic	Like "zlib", but the zlib library is expected to be a shared
 | 
					# zlib-dynamic	Like "zlib", but the zlib library is expected to be a shared
 | 
				
			||||||
#		library and will be loaded in run-time by the OpenSSL library.
 | 
					#		library and will be loaded in run-time by the OpenSSL library.
 | 
				
			||||||
 | 
					# enable-montasm 0.9.8 branch only: enable Montgomery x86 assembler backport
 | 
				
			||||||
 | 
					#               from 0.9.9
 | 
				
			||||||
# 386           generate 80386 code
 | 
					# 386           generate 80386 code
 | 
				
			||||||
# no-sse2	disables IA-32 SSE2 code, above option implies no-sse2
 | 
					# no-sse2	disables IA-32 SSE2 code, above option implies no-sse2
 | 
				
			||||||
# no-<cipher>   build without specified algorithm (rsa, idea, rc5, ...)
 | 
					# no-<cipher>   build without specified algorithm (rsa, idea, rc5, ...)
 | 
				
			||||||
@@ -99,6 +101,13 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 | 
				
			|||||||
# SHA512_ASM	sha512_block is implemented in assembler
 | 
					# SHA512_ASM	sha512_block is implemented in assembler
 | 
				
			||||||
# AES_ASM	ASE_[en|de]crypt is implemented in assembler
 | 
					# AES_ASM	ASE_[en|de]crypt is implemented in assembler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Minimum warning options... any contributions to OpenSSL should at least get
 | 
				
			||||||
 | 
					# past these. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					my $strict_warnings = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
 | 
					my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# MD2_CHAR slags pentium pros
 | 
					# MD2_CHAR slags pentium pros
 | 
				
			||||||
@@ -116,17 +125,15 @@ 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 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:rm86-elf.o:r586-elf.o";
 | 
					my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o MAYBE-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 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:rm86-cof.o:r586-cof.o";
 | 
					my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o MAYBE-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 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:rm86-out.o:r586-out.o";
 | 
					my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o MAYBE-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 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 $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 rc4_skey.o::";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_asm="::::::::::";
 | 
					my $no_asm="::::::::::";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $ia64_asm=$no_asm;
 | 
					 | 
				
			||||||
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
 | 
				
			||||||
@@ -154,22 +161,30 @@ my %table=(
 | 
				
			|||||||
"debug-ben",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
 | 
					"debug-ben",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
 | 
				
			||||||
"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
 | 
					"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
 | 
				
			||||||
"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
 | 
					"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
 | 
				
			||||||
"debug-ben-debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::::",
 | 
					"debug-ben-debug",	"gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG  -DDEBUG_SAFESTACK -ggdb3 -O2 -pipe::(unknown)::::::",
 | 
				
			||||||
 | 
					"debug-ben-debug-64",	"gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"debug-ben-debug-noopt",	"gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG  -DDEBUG_SAFESTACK -ggdb3 -pipe::(unknown)::::::",
 | 
				
			||||||
"debug-ben-strict",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
 | 
					"debug-ben-strict",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
 | 
				
			||||||
"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 -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-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 -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-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -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-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"debug-steve",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -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",
 | 
				
			||||||
"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-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-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 -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall::-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 -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall::-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 -DPEDANTIC -ggdb -g3 -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-noasm-extreme","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 -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}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -ggdb -g3 -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}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
 | 
					"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
 | 
				
			||||||
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
 | 
					"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
 | 
				
			||||||
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO  -g -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)",
 | 
				
			||||||
 | 
					"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -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)",
 | 
				
			||||||
 | 
					"debug-linux-x86_64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"dist",		"cc:-O::(unknown)::::::",
 | 
					"dist",		"cc:-O::(unknown)::::::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Basic configs that should work on any (32 and less bit) box
 | 
					# Basic configs that should work on any (32 and less bit) box
 | 
				
			||||||
@@ -195,33 +210,33 @@ my %table=(
 | 
				
			|||||||
# actually recommend to consider using gcc shared build even with vendor
 | 
					# actually recommend to consider using gcc shared build even with vendor
 | 
				
			||||||
# compiler:-)
 | 
					# compiler:-)
 | 
				
			||||||
#						<appro@fy.chalmers.se>
 | 
					#						<appro@fy.chalmers.se>
 | 
				
			||||||
"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
#### Solaris x86 with Sun C setups
 | 
					#### Solaris x86 with Sun C setups
 | 
				
			||||||
"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 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:${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)",
 | 
				
			||||||
# -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:${no_asm}: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::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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:::des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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::sparcv8.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)",
 | 
					"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:::::::::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:${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-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)",
 | 
					"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:::::::::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:${no_asm}: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:::des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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::sparcv8.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)", 
 | 
					"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::::::::::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}::",
 | 
				
			||||||
@@ -234,11 +249,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:${no_asm}: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::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=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)",
 | 
					"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::bn-mips3.o::::::::::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:${no_asm}: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::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=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)",
 | 
					"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::bn-mips3.o::::::::::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:
 | 
				
			||||||
@@ -271,8 +286,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:${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)",
 | 
				
			||||||
"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)",
 | 
					"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)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -280,8 +295,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:${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)",
 | 
				
			||||||
"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)",
 | 
					"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)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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)",
 | 
				
			||||||
@@ -318,28 +333,27 @@ 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:${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)",
 | 
				
			||||||
#### 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:${no_asm}: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::linux_ppc64.o::::::::::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 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:${no_asm}: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::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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::::::::::::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
 | 
				
			||||||
@@ -366,13 +380,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:${no_asm}: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::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::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:${no_asm}: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:::des_enc-sparc.o fcrypt_b.o:::::::::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)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -386,7 +400,8 @@ my %table=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# QNX
 | 
					# QNX
 | 
				
			||||||
"qnx4",	"cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
 | 
					"qnx4",	"cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
 | 
				
			||||||
"qnx6",	"cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:",
 | 
					"QNX6",       "gcc:-DTERMIOS::::-lsocket::${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					"QNX6-i386",  "gcc:-DL_ENDIAN -DTERMIOS -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### SCO/Caldera targets.
 | 
					#### SCO/Caldera targets.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -410,12 +425,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:${no_asm}:dlfcn:aix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
					"aix-gcc",  "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
				
			||||||
"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",
 | 
					"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64 -shared -Wl,-G:.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 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${no_asm}:dlfcn:aix-shared::-q32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
					"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
 | 
				
			||||||
"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",
 | 
					"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Cray T90 and similar (SDSC)
 | 
					# Cray T90 and similar (SDSC)
 | 
				
			||||||
@@ -486,15 +501,20 @@ my %table=(
 | 
				
			|||||||
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
 | 
					"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
 | 
				
			||||||
"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
 | 
					"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# NetWare from David Ward (dsward@novell.com) - requires MetroWerks NLM development tools
 | 
					# NetWare from David Ward (dsward@novell.com)
 | 
				
			||||||
 | 
					# requires either MetroWerks NLM development tools, or gcc / nlmconv
 | 
				
			||||||
 | 
					# NetWare defaults socket bio to WinSock sockets. However,
 | 
				
			||||||
 | 
					# the builds can be configured to use BSD sockets instead.
 | 
				
			||||||
# netware-clib => legacy CLib c-runtime support
 | 
					# netware-clib => legacy CLib c-runtime support
 | 
				
			||||||
"netware-clib", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
 | 
					"netware-clib", "mwccnlm::::::${x86_gcc_opts}::",
 | 
				
			||||||
 | 
					"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::",
 | 
				
			||||||
 | 
					"netware-clib-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
 | 
				
			||||||
 | 
					"netware-clib-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
 | 
				
			||||||
# netware-libc => LibC/NKS support
 | 
					# netware-libc => LibC/NKS support
 | 
				
			||||||
# NetWare defaults socket bio to WinSock sockets. However, the LibC build can be
 | 
					 | 
				
			||||||
# configured to use BSD sockets instead.
 | 
					 | 
				
			||||||
"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
 | 
					"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
 | 
				
			||||||
"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
 | 
					"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
 | 
				
			||||||
"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
 | 
					"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
 | 
				
			||||||
 | 
					"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# DJGPP
 | 
					# DJGPP
 | 
				
			||||||
"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:",
 | 
					"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:",
 | 
				
			||||||
@@ -507,9 +527,12 @@ 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:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"darwin-ppc-cc","cc:-arch ppc -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:-arch ppc -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",
 | 
					"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc64.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -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",
 | 
					"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_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:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
 | 
					"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_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:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
 | 
					"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -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",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### 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:::",
 | 
				
			||||||
@@ -524,8 +547,6 @@ my %table=(
 | 
				
			|||||||
"OS2-EMX", "gcc::::::::",
 | 
					"OS2-EMX", "gcc::::::::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### VxWorks for various targets
 | 
					##### VxWorks for various targets
 | 
				
			||||||
"vxworks-ppc60x","ccppc:-D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common:::linux_ppc32.o:::::::::::::::ranlibppc:",
 | 
					 | 
				
			||||||
"vxworks-ppcgen","ccppc:-D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon:::linux_ppc32.o:::::::::::::::ranlibppc:",
 | 
					 | 
				
			||||||
"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
 | 
					"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
 | 
				
			||||||
"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
 | 
					"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
 | 
				
			||||||
"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
 | 
					"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
 | 
				
			||||||
@@ -539,7 +560,9 @@ my %table=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
 | 
					my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
 | 
				
			||||||
		    VC-NT VC-CE VC-WIN32
 | 
							    VC-NT VC-CE VC-WIN32
 | 
				
			||||||
		    BC-32 OS2-EMX netware-clib netware-libc netware-libc-bsdsock);
 | 
							    BC-32 OS2-EMX
 | 
				
			||||||
 | 
							    netware-clib netware-clib-bsdsock
 | 
				
			||||||
 | 
							    netware-libc netware-libc-bsdsock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $idx = 0;
 | 
					my $idx = 0;
 | 
				
			||||||
my $idx_cc = $idx++;
 | 
					my $idx_cc = $idx++;
 | 
				
			||||||
@@ -569,11 +592,12 @@ my $idx_ranlib = $idx++;
 | 
				
			|||||||
my $idx_arflags = $idx++;
 | 
					my $idx_arflags = $idx++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $prefix="";
 | 
					my $prefix="";
 | 
				
			||||||
 | 
					my $libdir="";
 | 
				
			||||||
my $openssldir="";
 | 
					my $openssldir="";
 | 
				
			||||||
my $exe_ext="";
 | 
					my $exe_ext="";
 | 
				
			||||||
my $install_prefix="$ENV{'INSTALL_PREFIX'}";
 | 
					my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
 | 
				
			||||||
my $cross_compile_prefix="$ENV{'CROSS_COMPILE'}";
 | 
					my $cross_compile_prefix="";
 | 
				
			||||||
my $fipslibdir="/usr/local/ssl/lib/fips-1.0/";
 | 
					my $fipslibdir="/usr/local/ssl/fips-1.0/lib/";
 | 
				
			||||||
my $nofipscanistercheck=0;
 | 
					my $nofipscanistercheck=0;
 | 
				
			||||||
my $fipsdso=0;
 | 
					my $fipsdso=0;
 | 
				
			||||||
my $fipscanisterinternal="n";
 | 
					my $fipscanisterinternal="n";
 | 
				
			||||||
@@ -584,6 +608,7 @@ my $no_shared=0; # but "no-shared" is default
 | 
				
			|||||||
my $zlib=1;      # but "no-zlib" is default
 | 
					my $zlib=1;      # but "no-zlib" is default
 | 
				
			||||||
my $no_krb5=0;   # but "no-krb5" is implied unless "--with-krb5-..." is used
 | 
					my $no_krb5=0;   # but "no-krb5" is implied unless "--with-krb5-..." is used
 | 
				
			||||||
my $no_rfc3779=1; # but "no-rfc3779" is default
 | 
					my $no_rfc3779=1; # but "no-rfc3779" is default
 | 
				
			||||||
 | 
					my $montasm=1;   # but "no-montasm" is default
 | 
				
			||||||
my $no_asm=0;
 | 
					my $no_asm=0;
 | 
				
			||||||
my $no_dso=0;
 | 
					my $no_dso=0;
 | 
				
			||||||
my $no_gmp=0;
 | 
					my $no_gmp=0;
 | 
				
			||||||
@@ -604,7 +629,7 @@ 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="";
 | 
				
			||||||
@@ -617,10 +642,14 @@ 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" [or special keyword "experimental"]
 | 
				
			||||||
                 "camellia"       => "default",
 | 
					                 "camellia"       => "default",
 | 
				
			||||||
 | 
					                 "capieng"        => "default",
 | 
				
			||||||
 | 
					                 "cms"            => "default",
 | 
				
			||||||
                 "gmp"            => "default",
 | 
					                 "gmp"            => "default",
 | 
				
			||||||
 | 
					                 "jpake"          => "experimental",
 | 
				
			||||||
                 "mdc2"           => "default",
 | 
					                 "mdc2"           => "default",
 | 
				
			||||||
 | 
					                 "montasm"        => "default", # explicit option in 0.9.8 only (implicitly enabled in 0.9.9)
 | 
				
			||||||
                 "rc5"            => "default",
 | 
					                 "rc5"            => "default",
 | 
				
			||||||
                 "rfc3779"        => "default",
 | 
					                 "rfc3779"        => "default",
 | 
				
			||||||
                 "seed"           => "default",
 | 
					                 "seed"           => "default",
 | 
				
			||||||
@@ -628,13 +657,20 @@ my %disabled = ( # "what"         => "comment"
 | 
				
			|||||||
                 "zlib"           => "default",
 | 
					                 "zlib"           => "default",
 | 
				
			||||||
                 "zlib-dynamic"   => "default"
 | 
					                 "zlib-dynamic"   => "default"
 | 
				
			||||||
               );
 | 
					               );
 | 
				
			||||||
 | 
					my @experimental = ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Additional "no-..." options will be collected in %disabled.
 | 
					# This is what $depflags will look like with the above defaults
 | 
				
			||||||
# To remove something from %disabled, use e.g. "enable-rc5".
 | 
					# (we need this to see if we should advise the user to run "make depend"):
 | 
				
			||||||
# For symmetry, "disable-..." is a synonym for "no-...".
 | 
					my $default_depflags = " -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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 -DOPENSSL_NO_SEED ";
 | 
					# Explicit "no-..." options will be collected in %disabled along with the defaults.
 | 
				
			||||||
 | 
					# To remove something from %disabled, use "enable-foo" (unless it's experimental).
 | 
				
			||||||
 | 
					# For symmetry, "disable-foo" is a synonym for "no-foo".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
 | 
				
			||||||
 | 
					# We will collect such requests in @experimental.
 | 
				
			||||||
 | 
					# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_sse2=0;
 | 
					my $no_sse2=0;
 | 
				
			||||||
@@ -643,6 +679,7 @@ my $no_sse2=0;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
my $flags;
 | 
					my $flags;
 | 
				
			||||||
my $depflags;
 | 
					my $depflags;
 | 
				
			||||||
 | 
					my $openssl_experimental_defines;
 | 
				
			||||||
my $openssl_algorithm_defines;
 | 
					my $openssl_algorithm_defines;
 | 
				
			||||||
my $openssl_thread_defines;
 | 
					my $openssl_thread_defines;
 | 
				
			||||||
my $openssl_sys_defines="";
 | 
					my $openssl_sys_defines="";
 | 
				
			||||||
@@ -663,6 +700,7 @@ while($argv_unprocessed)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	$flags="";
 | 
						$flags="";
 | 
				
			||||||
	$depflags="";
 | 
						$depflags="";
 | 
				
			||||||
 | 
						$openssl_experimental_defines="";
 | 
				
			||||||
	$openssl_algorithm_defines="";
 | 
						$openssl_algorithm_defines="";
 | 
				
			||||||
	$openssl_thread_defines="";
 | 
						$openssl_thread_defines="";
 | 
				
			||||||
	$openssl_sys_defines="";
 | 
						$openssl_sys_defines="";
 | 
				
			||||||
@@ -688,30 +726,44 @@ PROCESS_ARGS:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (/^no-(.+)$/ || /^disable-(.+)$/)
 | 
							if (/^no-(.+)$/ || /^disable-(.+)$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if ($1 eq "ssl")
 | 
								if (!($disabled{$1} eq "experimental"))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				$disabled{"ssl2"} = "option(ssl)";
 | 
									if ($1 eq "ssl")
 | 
				
			||||||
				$disabled{"ssl3"} = "option(ssl)";
 | 
										{
 | 
				
			||||||
				}
 | 
										$disabled{"ssl2"} = "option(ssl)";
 | 
				
			||||||
			elsif ($1 eq "tls")
 | 
										$disabled{"ssl3"} = "option(ssl)";
 | 
				
			||||||
				{
 | 
										}
 | 
				
			||||||
				$disabled{"tls1"} = "option(tls)"
 | 
									elsif ($1 eq "tls")
 | 
				
			||||||
				}
 | 
										{
 | 
				
			||||||
			else
 | 
										$disabled{"tls1"} = "option(tls)"
 | 
				
			||||||
				{
 | 
										}
 | 
				
			||||||
				$disabled{$1} = "option";
 | 
									else
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										$disabled{$1} = "option";
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}			
 | 
								}			
 | 
				
			||||||
		elsif (/^enable-(.+)$/)
 | 
							elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			delete $disabled{$1};
 | 
								my $algo = $1;
 | 
				
			||||||
 | 
								if ($disabled{$algo} eq "experimental")
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
 | 
				
			||||||
 | 
										unless (/^experimental-/);
 | 
				
			||||||
 | 
									push @experimental, $algo;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								delete $disabled{$algo};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			$threads = 1 if ($1 eq "threads");
 | 
								$threads = 1 if ($algo eq "threads");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		elsif (/^--test-sanity$/)
 | 
							elsif (/^--test-sanity$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			exit(&test_sanity());
 | 
								exit(&test_sanity());
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							elsif (/^--strict-warnings/)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$strict_warnings = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		elsif (/^reconfigure/ || /^reconf/)
 | 
							elsif (/^reconfigure/ || /^reconf/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (open(IN,"<$Makefile"))
 | 
								if (open(IN,"<$Makefile"))
 | 
				
			||||||
@@ -781,6 +833,10 @@ PROCESS_ARGS:
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				$prefix=$1;
 | 
									$prefix=$1;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								elsif (/^--libdir=(.*)$/)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									$libdir=$1;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			elsif (/^--openssldir=(.*)$/)
 | 
								elsif (/^--openssldir=(.*)$/)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				$openssldir=$1;
 | 
									$openssldir=$1;
 | 
				
			||||||
@@ -888,6 +944,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) {
 | 
				
			||||||
@@ -914,6 +974,10 @@ print "Configuring for $target\n";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
					my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
				
			||||||
my $cc = $fields[$idx_cc];
 | 
					my $cc = $fields[$idx_cc];
 | 
				
			||||||
 | 
					# Allow environment CC to override compiler...
 | 
				
			||||||
 | 
					if($ENV{CC}) {
 | 
				
			||||||
 | 
					    $cc = $ENV{CC};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
my $cflags = $fields[$idx_cflags];
 | 
					my $cflags = $fields[$idx_cflags];
 | 
				
			||||||
my $unistd = $fields[$idx_unistd];
 | 
					my $unistd = $fields[$idx_unistd];
 | 
				
			||||||
my $thread_cflag = $fields[$idx_thread_cflag];
 | 
					my $thread_cflag = $fields[$idx_thread_cflag];
 | 
				
			||||||
@@ -936,7 +1000,8 @@ my $shared_target = $fields[$idx_shared_target];
 | 
				
			|||||||
my $shared_cflag = $fields[$idx_shared_cflag];
 | 
					my $shared_cflag = $fields[$idx_shared_cflag];
 | 
				
			||||||
my $shared_ldflag = $fields[$idx_shared_ldflag];
 | 
					my $shared_ldflag = $fields[$idx_shared_ldflag];
 | 
				
			||||||
my $shared_extension = $fields[$idx_shared_extension];
 | 
					my $shared_extension = $fields[$idx_shared_extension];
 | 
				
			||||||
my $ranlib = $fields[$idx_ranlib];
 | 
					my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
 | 
				
			||||||
 | 
					my $ar = $ENV{'AR'} || "ar";
 | 
				
			||||||
my $arflags = $fields[$idx_arflags];
 | 
					my $arflags = $fields[$idx_arflags];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($fips)
 | 
					if ($fips)
 | 
				
			||||||
@@ -947,6 +1012,15 @@ if ($fips)
 | 
				
			|||||||
		    "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
 | 
							    "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					foreach (sort @experimental)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						my $ALGO;
 | 
				
			||||||
 | 
						($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
 | 
				
			||||||
 | 
						$openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
 | 
				
			||||||
 | 
						$cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foreach (sort (keys %disabled))
 | 
					foreach (sort (keys %disabled))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -962,6 +1036,8 @@ foreach (sort (keys %disabled))
 | 
				
			|||||||
		{ $no_shared = 1; }
 | 
							{ $no_shared = 1; }
 | 
				
			||||||
	elsif (/^zlib$/)
 | 
						elsif (/^zlib$/)
 | 
				
			||||||
		{ $zlib = 0; }
 | 
							{ $zlib = 0; }
 | 
				
			||||||
 | 
						elsif (/^montasm$/)
 | 
				
			||||||
 | 
							{ $montasm = 0; }
 | 
				
			||||||
	elsif (/^static-engine$/)
 | 
						elsif (/^static-engine$/)
 | 
				
			||||||
		{ }
 | 
							{ }
 | 
				
			||||||
	elsif (/^zlib-dynamic$/)
 | 
						elsif (/^zlib-dynamic$/)
 | 
				
			||||||
@@ -995,7 +1071,7 @@ foreach (sort (keys %disabled))
 | 
				
			|||||||
				push @skip, $algo;
 | 
									push @skip, $algo;
 | 
				
			||||||
				print " (skip dir)";
 | 
									print " (skip dir)";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				$depflags .="-DOPENSSL_NO_$ALGO ";
 | 
									$depflags .= " -DOPENSSL_NO_$ALGO";
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1003,7 +1079,6 @@ foreach (sort (keys %disabled))
 | 
				
			|||||||
	print "\n";
 | 
						print "\n";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
 | 
					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());
 | 
				
			||||||
@@ -1011,12 +1086,13 @@ $IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
 | 
				
			|||||||
$no_shared = 0 if ($fipsdso && !$IsMK1MF);
 | 
					$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=".nlm" if ($target =~ /netware/);
 | 
				
			||||||
$exe_ext=".pm"  if ($target =~ /vos/);
 | 
					$exe_ext=".pm"  if ($target =~ /vos/);
 | 
				
			||||||
if ($openssldir eq "" and $prefix eq "")
 | 
					if ($openssldir eq "" and $prefix eq "")
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	if ($fips)
 | 
						if ($fips)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		$openssldir="/usr/local/ssl/fips-1.0";
 | 
							$openssldir="/usr/local/ssl/fips";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1025,12 +1101,17 @@ if ($openssldir eq "" and $prefix eq "")
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
$prefix=$openssldir if $prefix eq "";
 | 
					$prefix=$openssldir if $prefix eq "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$libdir="lib" if $libdir eq "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$default_ranlib= &which("ranlib") or $default_ranlib="true";
 | 
					$default_ranlib= &which("ranlib") or $default_ranlib="true";
 | 
				
			||||||
$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
 | 
					$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
 | 
				
			||||||
  or $perl="perl";
 | 
					  or $perl="perl";
 | 
				
			||||||
 | 
					my $make = $ENV{'MAKE'} || "make";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chop $openssldir if $openssldir =~ /\/$/;
 | 
					chop $openssldir if $openssldir =~ /\/$/;
 | 
				
			||||||
chop $prefix if $prefix =~ /\/$/;
 | 
					chop $prefix if $prefix =~ /.\/$/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$openssldir=$prefix . "/ssl" if $openssldir eq "";
 | 
					$openssldir=$prefix . "/ssl" if $openssldir eq "";
 | 
				
			||||||
$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
 | 
					$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
 | 
				
			||||||
@@ -1174,6 +1255,14 @@ if ($no_asm)
 | 
				
			|||||||
	$cflags=~s/\-D[BL]_ENDIAN//		if ($fips);
 | 
						$cflags=~s/\-D[BL]_ENDIAN//		if ($fips);
 | 
				
			||||||
	$thread_cflags=~s/\-D[BL]_ENDIAN//	if ($fips);
 | 
						$thread_cflags=~s/\-D[BL]_ENDIAN//	if ($fips);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					if ($montasm)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$bn_obj =~ s/MAYBE-MO86-/mo86-/;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$bn_obj =~ s/MAYBE-MO86-[a-z.]*//;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!$no_shared)
 | 
					if (!$no_shared)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -1239,7 +1328,6 @@ if ($target =~ /\-icc$/)	# Intel C compiler
 | 
				
			|||||||
		while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
 | 
							while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
 | 
				
			||||||
		close(FD);
 | 
							close(FD);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ($iccver>=8)
 | 
						if ($iccver>=8)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		# Eliminate unnecessary dependency from libirc.a. This is
 | 
							# Eliminate unnecessary dependency from libirc.a. This is
 | 
				
			||||||
@@ -1373,6 +1461,16 @@ if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
 | 
				
			|||||||
	$shlib_minor=$2;
 | 
						$shlib_minor=$2;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($strict_warnings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						my $wopt;
 | 
				
			||||||
 | 
						die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/);
 | 
				
			||||||
 | 
						foreach $wopt (split /\s+/, $gcc_devteam_warn)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							$cflags .= " $wopt" unless ($cflags =~ /$wopt/)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
 | 
					open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
 | 
				
			||||||
unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
 | 
					unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
 | 
				
			||||||
open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
 | 
					open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
 | 
				
			||||||
@@ -1385,10 +1483,13 @@ while (<IN>)
 | 
				
			|||||||
	if ($sdirs) {
 | 
						if ($sdirs) {
 | 
				
			||||||
		my $dir;
 | 
							my $dir;
 | 
				
			||||||
		foreach $dir (@skip) {
 | 
							foreach $dir (@skip) {
 | 
				
			||||||
			s/([ 	])$dir /\1/;
 | 
								s/(\s)$dir\s/$1/;
 | 
				
			||||||
 | 
								s/\s$dir$//;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	$sdirs = 0 unless /\\$/;
 | 
						$sdirs = 0 unless /\\$/;
 | 
				
			||||||
 | 
					        s/fips // if (/^DIRS=/ && !$fips);
 | 
				
			||||||
 | 
					        s/engines // if (/^DIRS=/ && $disabled{"engine"});
 | 
				
			||||||
	s/^VERSION=.*/VERSION=$version/;
 | 
						s/^VERSION=.*/VERSION=$version/;
 | 
				
			||||||
	s/^MAJOR=.*/MAJOR=$major/;
 | 
						s/^MAJOR=.*/MAJOR=$major/;
 | 
				
			||||||
	s/^MINOR=.*/MINOR=$minor/;
 | 
						s/^MINOR=.*/MINOR=$minor/;
 | 
				
			||||||
@@ -1399,6 +1500,7 @@ while (<IN>)
 | 
				
			|||||||
	s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
 | 
						s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
 | 
				
			||||||
	s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
 | 
						s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
 | 
				
			||||||
	s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
 | 
						s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
 | 
				
			||||||
 | 
						s/^LIBDIR=.*$/LIBDIR=$libdir/;
 | 
				
			||||||
	s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
 | 
						s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
 | 
				
			||||||
	s/^PLATFORM=.*$/PLATFORM=$target/;
 | 
						s/^PLATFORM=.*$/PLATFORM=$target/;
 | 
				
			||||||
	s/^OPTIONS=.*$/OPTIONS=$options/;
 | 
						s/^OPTIONS=.*$/OPTIONS=$options/;
 | 
				
			||||||
@@ -1411,11 +1513,12 @@ while (<IN>)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	else	{
 | 
						else	{
 | 
				
			||||||
		s/^CC=.*$/CC= $cc/;
 | 
							s/^CC=.*$/CC= $cc/;
 | 
				
			||||||
 | 
							s/^AR=\s*ar/AR= $ar/;
 | 
				
			||||||
		s/^RANLIB=.*/RANLIB= $ranlib/;
 | 
							s/^RANLIB=.*/RANLIB= $ranlib/;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	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/^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/;
 | 
				
			||||||
@@ -1558,6 +1661,7 @@ print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configur
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
print OUT "/* OpenSSL was configured with the following options: */\n";
 | 
					print OUT "/* OpenSSL was configured with the following options: */\n";
 | 
				
			||||||
my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
 | 
					my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
 | 
				
			||||||
 | 
					$openssl_experimental_defines =~ s/^\s*#\s*define\s+OPENSSL_NO_(.*)/#ifndef OPENSSL_EXPERIMENTAL_$1\n# ifndef OPENSSL_NO_$1\n#  define OPENSSL_NO_$1\n# endif\n#endif/mg;
 | 
				
			||||||
$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n#  define $1\n# endif/mg;
 | 
					$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n#  define $1\n# endif/mg;
 | 
				
			||||||
$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
 | 
					$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
 | 
				
			||||||
$openssl_algorithm_defines = "   /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
 | 
					$openssl_algorithm_defines = "   /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
 | 
				
			||||||
@@ -1566,8 +1670,10 @@ $openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/
 | 
				
			|||||||
$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
 | 
					$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
 | 
				
			||||||
print OUT $openssl_sys_defines;
 | 
					print OUT $openssl_sys_defines;
 | 
				
			||||||
print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
 | 
					print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
 | 
				
			||||||
 | 
					print OUT $openssl_experimental_defines;
 | 
				
			||||||
 | 
					print OUT "\n";
 | 
				
			||||||
print OUT $openssl_algorithm_defines;
 | 
					print OUT $openssl_algorithm_defines;
 | 
				
			||||||
print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n";
 | 
					print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
 | 
				
			||||||
print OUT $openssl_thread_defines;
 | 
					print OUT $openssl_thread_defines;
 | 
				
			||||||
print OUT $openssl_other_defines,"\n";
 | 
					print OUT $openssl_other_defines,"\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1584,9 +1690,20 @@ print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj);
 | 
				
			|||||||
while (<IN>)
 | 
					while (<IN>)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	if	(/^#define\s+OPENSSLDIR/)
 | 
						if	(/^#define\s+OPENSSLDIR/)
 | 
				
			||||||
		{ print OUT "#define OPENSSLDIR \"$openssldir\"\n"; }
 | 
							{
 | 
				
			||||||
 | 
							my $foo = $openssldir;
 | 
				
			||||||
 | 
							$foo =~ s/\\/\\\\/g;
 | 
				
			||||||
 | 
							print OUT "#define OPENSSLDIR \"$foo\"\n";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	elsif	(/^#define\s+ENGINESDIR/)
 | 
						elsif	(/^#define\s+ENGINESDIR/)
 | 
				
			||||||
		{ print OUT "#define ENGINESDIR \"$prefix/lib/engines\"\n"; }
 | 
							{
 | 
				
			||||||
 | 
							# $foo is to become "$prefix/lib$multilib/engines";
 | 
				
			||||||
 | 
							# as Makefile.org and engines/Makefile are adapted for
 | 
				
			||||||
 | 
							# $multilib suffix.
 | 
				
			||||||
 | 
							my $foo = "$prefix/lib/engines";
 | 
				
			||||||
 | 
							$foo =~ s/\\/\\\\/g;
 | 
				
			||||||
 | 
							print OUT "#define ENGINESDIR \"$foo\"\n";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	elsif	(/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
 | 
						elsif	(/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
 | 
				
			||||||
		{ printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
 | 
							{ printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
 | 
				
			||||||
			if $export_var_as_fn;
 | 
								if $export_var_as_fn;
 | 
				
			||||||
@@ -1691,7 +1808,7 @@ if($IsMK1MF) {
 | 
				
			|||||||
EOF
 | 
					EOF
 | 
				
			||||||
	close(OUT);
 | 
						close(OUT);
 | 
				
			||||||
} else {
 | 
					} else {
 | 
				
			||||||
	my $make_command = "make PERL=\'$perl\'";
 | 
						my $make_command = "$make PERL=\'$perl\'";
 | 
				
			||||||
	my $make_targets = "";
 | 
						my $make_targets = "";
 | 
				
			||||||
	$make_targets .= " links" if $symlink;
 | 
						$make_targets .= " links" if $symlink;
 | 
				
			||||||
	$make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
 | 
						$make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
 | 
				
			||||||
@@ -1699,11 +1816,11 @@ EOF
 | 
				
			|||||||
	(system $make_command.$make_targets) == 0 or exit $?
 | 
						(system $make_command.$make_targets) == 0 or exit $?
 | 
				
			||||||
		if $make_targets ne "";
 | 
							if $make_targets ne "";
 | 
				
			||||||
	if ( $perl =~ m@^/@) {
 | 
						if ( $perl =~ m@^/@) {
 | 
				
			||||||
	    &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
 | 
						    &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
 | 
				
			||||||
	    &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
 | 
						    &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
	    # No path for Perl known ...
 | 
						    # No path for Perl known ...
 | 
				
			||||||
	    &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
 | 
						    &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";',  '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
 | 
				
			||||||
	    &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
 | 
						    &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ($depflags ne $default_depflags && !$make_depend) {
 | 
						if ($depflags ne $default_depflags && !$make_depend) {
 | 
				
			||||||
@@ -1718,7 +1835,7 @@ EOF
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# create the ms/version32.rc file if needed
 | 
					# create the ms/version32.rc file if needed
 | 
				
			||||||
if ($IsMK1MF) {
 | 
					if ($IsMK1MF && ($target !~ /^netware/)) {
 | 
				
			||||||
	my ($v1, $v2, $v3, $v4);
 | 
						my ($v1, $v2, $v3, $v4);
 | 
				
			||||||
	if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
 | 
						if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
 | 
				
			||||||
		$v1=hex $1;
 | 
							$v1=hex $1;
 | 
				
			||||||
@@ -1820,7 +1937,7 @@ OpenSSL FIPS Object Module as identified by the CMVP
 | 
				
			|||||||
(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
 | 
					(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
 | 
				
			||||||
140-2 validated software. 
 | 
					140-2 validated software. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is an OpenSSL 0.9.8-fips test version.
 | 
					This is an OpenSSL 0.9.8 test version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See the file README.FIPS for details of how to build a test library.
 | 
					See the file README.FIPS for details of how to build a test library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										179
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										179
									
								
								FAQ
									
									
									
									
									
								
							@@ -10,6 +10,7 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* Why aren't tools like 'autoconf' and 'libtool' used?
 | 
					* Why aren't tools like 'autoconf' and 'libtool' used?
 | 
				
			||||||
* What is an 'engine' version?
 | 
					* What is an 'engine' version?
 | 
				
			||||||
* How do I check the authenticity of the OpenSSL distribution?
 | 
					* How do I check the authenticity of the OpenSSL distribution?
 | 
				
			||||||
 | 
					* How does the versioning scheme work?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[LEGAL] Legal questions
 | 
					[LEGAL] Legal questions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,6 +33,8 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* How do I install a CA certificate into a browser?
 | 
					* How do I install a CA certificate into a browser?
 | 
				
			||||||
* Why is OpenSSL x509 DN output not conformant to RFC2253?
 | 
					* Why is OpenSSL x509 DN output not conformant to RFC2253?
 | 
				
			||||||
* What is a "128 bit certificate"? Can I create one with OpenSSL?
 | 
					* What is a "128 bit certificate"? Can I create one with OpenSSL?
 | 
				
			||||||
 | 
					* Why does OpenSSL set the authority key identifier extension incorrectly?
 | 
				
			||||||
 | 
					* How can I set up a bundle of commercial root CA certificates?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[BUILD] Questions about building and testing OpenSSL
 | 
					[BUILD] Questions about building and testing OpenSSL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,6 +53,9 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* Why does the OpenSSL test suite fail in sha512t on x86 CPU?
 | 
					* Why does the OpenSSL test suite fail in sha512t on x86 CPU?
 | 
				
			||||||
* Why does compiler fail to compile sha512.c?
 | 
					* Why does compiler fail to compile sha512.c?
 | 
				
			||||||
* Test suite still fails, what to do?
 | 
					* Test suite still fails, what to do?
 | 
				
			||||||
 | 
					* I think I've found a bug, what should I do?
 | 
				
			||||||
 | 
					* I'm SURE I've found a bug, how do I report it?
 | 
				
			||||||
 | 
					* I've found a security issue, how do I report it?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[PROG] Questions about programming with OpenSSL
 | 
					[PROG] Questions about programming with OpenSSL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,6 +72,9 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* Why doesn't my server application receive a client certificate?
 | 
					* Why doesn't my server application receive a client certificate?
 | 
				
			||||||
* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
 | 
					* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
 | 
				
			||||||
* I think I've detected a memory leak, is this a bug?
 | 
					* I think I've detected a memory leak, is this a bug?
 | 
				
			||||||
 | 
					* Why does Valgrind complain about the use of uninitialized data?
 | 
				
			||||||
 | 
					* Why doesn't a memory BIO work when a file does?
 | 
				
			||||||
 | 
					* Where are the declarations and implementations of d2i_X509() etc?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===============================================================================
 | 
					===============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,7 +83,7 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* Which is the current version of OpenSSL?
 | 
					* Which is the current version of OpenSSL?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The current version is available from <URL: http://www.openssl.org>.
 | 
					The current version is available from <URL: http://www.openssl.org>.
 | 
				
			||||||
OpenSSL 0.9.8e was released on February 23rd, 2007.
 | 
					OpenSSL 1.0.1d was released on Feb 5th, 2013.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In addition to the current stable release, you can also access daily
 | 
					In addition to the current stable release, you can also access daily
 | 
				
			||||||
snapshots of the OpenSSL development version at <URL:
 | 
					snapshots of the OpenSSL development version at <URL:
 | 
				
			||||||
@@ -90,14 +99,19 @@ explains how to install this library.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
OpenSSL includes a command line utility that can be used to perform a
 | 
					OpenSSL includes a command line utility that can be used to perform a
 | 
				
			||||||
variety of cryptographic functions.  It is described in the openssl(1)
 | 
					variety of cryptographic functions.  It is described in the openssl(1)
 | 
				
			||||||
manpage.  Documentation for developers is currently being written.  A
 | 
					manpage.  Documentation for developers is currently being written. Many
 | 
				
			||||||
few manual pages already are available; overviews over libcrypto and
 | 
					manual pages are available; overviews over libcrypto and
 | 
				
			||||||
libssl are given in the crypto(3) and ssl(3) manpages.
 | 
					libssl are given in the crypto(3) and ssl(3) manpages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a
 | 
					The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a
 | 
				
			||||||
different directory if you specified one as described in INSTALL).
 | 
					different directory if you specified one as described in INSTALL).
 | 
				
			||||||
In addition, you can read the most current versions at
 | 
					In addition, you can read the most current versions at
 | 
				
			||||||
<URL: http://www.openssl.org/docs/>.
 | 
					<URL: http://www.openssl.org/docs/>. Note that the online documents refer
 | 
				
			||||||
 | 
					to the very latest development versions of OpenSSL and may include features
 | 
				
			||||||
 | 
					not present in released versions. If in doubt refer to the documentation
 | 
				
			||||||
 | 
					that came with the version of OpenSSL you are using. The pod format
 | 
				
			||||||
 | 
					documentation is included in each OpenSSL distribution under the docs
 | 
				
			||||||
 | 
					directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For information on parts of libcrypto that are not yet documented, you
 | 
					For information on parts of libcrypto that are not yet documented, you
 | 
				
			||||||
might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
 | 
					might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
 | 
				
			||||||
@@ -123,7 +137,7 @@ OpenSSL.  Information on the OpenSSL mailing lists is available from
 | 
				
			|||||||
* Where can I get a compiled version of OpenSSL?
 | 
					* Where can I get a compiled version of OpenSSL?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can finder pointers to binary distributions in
 | 
					You can finder pointers to binary distributions in
 | 
				
			||||||
http://www.openssl.org/related/binaries.html .
 | 
					<URL: http://www.openssl.org/related/binaries.html> .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Some applications that use OpenSSL are distributed in binary form.
 | 
					Some applications that use OpenSSL are distributed in binary form.
 | 
				
			||||||
When using such an application, you don't need to install OpenSSL
 | 
					When using such an application, you don't need to install OpenSSL
 | 
				
			||||||
@@ -162,6 +176,19 @@ just do:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   pgp TARBALL.asc
 | 
					   pgp TARBALL.asc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* How does the versioning scheme work?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After the release of OpenSSL 1.0.0 the versioning scheme changed. Letter 
 | 
				
			||||||
 | 
					releases (e.g. 1.0.1a) can only contain bug and security fixes and no
 | 
				
			||||||
 | 
					new features. Minor releases change the last number (e.g. 1.0.2) and 
 | 
				
			||||||
 | 
					can contain new features that retain binary compatibility. Changes to
 | 
				
			||||||
 | 
					the middle number are considered major releases and neither source nor
 | 
				
			||||||
 | 
					binary compatibility is guaranteed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Therefore the answer to the common question "when will feature X be
 | 
				
			||||||
 | 
					backported to OpenSSL 1.0.0/0.9.8?" is "never" but it could appear
 | 
				
			||||||
 | 
					in the next minor release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[LEGAL] =======================================================================
 | 
					[LEGAL] =======================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Do I need patent licenses to use OpenSSL?
 | 
					* Do I need patent licenses to use OpenSSL?
 | 
				
			||||||
@@ -273,7 +300,7 @@ current directory in this case, but this has changed with 0.9.6a.)
 | 
				
			|||||||
Check out the CA.pl(1) manual page. This provides a simple wrapper round
 | 
					Check out the CA.pl(1) manual page. This provides a simple wrapper round
 | 
				
			||||||
the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
 | 
					the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
 | 
				
			||||||
out the manual pages for the individual utilities and the certificate
 | 
					out the manual pages for the individual utilities and the certificate
 | 
				
			||||||
extensions documentation (currently in doc/openssl.txt).
 | 
					extensions documentation (in ca(1), req(1), x509v3_config(5) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Why can't I create certificate requests?
 | 
					* Why can't I create certificate requests?
 | 
				
			||||||
@@ -401,10 +428,10 @@ You can't generally create such a certificate using OpenSSL but there is no
 | 
				
			|||||||
need to any more. Nowadays web browsers using unrestricted strong encryption
 | 
					need to any more. Nowadays web browsers using unrestricted strong encryption
 | 
				
			||||||
are generally available.
 | 
					are generally available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When there were tight export restrictions on the export of strong encryption
 | 
					When there were tight restrictions on the export of strong encryption
 | 
				
			||||||
software from the US only weak encryption algorithms could be freely exported
 | 
					software from the US only weak encryption algorithms could be freely exported
 | 
				
			||||||
(initially 40 bit and then 56 bit). It was widely recognised that this was
 | 
					(initially 40 bit and then 56 bit). It was widely recognised that this was
 | 
				
			||||||
inadequate. A relaxation the rules allowed the use of strong encryption but
 | 
					inadequate. A relaxation of the rules allowed the use of strong encryption but
 | 
				
			||||||
only to an authorised server.
 | 
					only to an authorised server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Two slighly different techniques were developed to support this, one used by
 | 
					Two slighly different techniques were developed to support this, one used by
 | 
				
			||||||
@@ -425,6 +452,39 @@ The export laws were later changed to allow almost unrestricted use of strong
 | 
				
			|||||||
encryption so these certificates are now obsolete.
 | 
					encryption so these certificates are now obsolete.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Why does OpenSSL set the authority key identifier (AKID) extension incorrectly?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It doesn't: this extension is often the cause of confusion.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Consider a certificate chain A->B->C so that A signs B and B signs C. Suppose
 | 
				
			||||||
 | 
					certificate C contains AKID.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The purpose of this extension is to identify the authority certificate B. This
 | 
				
			||||||
 | 
					can be done either by including the subject key identifier of B or its issuer
 | 
				
			||||||
 | 
					name and serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In this latter case because it is identifying certifcate B it must contain the
 | 
				
			||||||
 | 
					issuer name and serial number of B.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is often wrongly assumed that it should contain the subject name of B. If it
 | 
				
			||||||
 | 
					did this would be redundant information because it would duplicate the issuer
 | 
				
			||||||
 | 
					name of C.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* How can I set up a bundle of commercial root CA certificates?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The OpenSSL software is shipped without any root CA certificate as the
 | 
				
			||||||
 | 
					OpenSSL project does not have any policy on including or excluding
 | 
				
			||||||
 | 
					any specific CA and does not intend to set up such a policy. Deciding
 | 
				
			||||||
 | 
					about which CAs to support is up to application developers or
 | 
				
			||||||
 | 
					administrators.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other projects do have other policies so you can for example extract the CA
 | 
				
			||||||
 | 
					bundle used by Mozilla and/or modssl as described in this article:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <URL: http://www.mail-archive.com/modssl-users@modssl.org/msg16980.html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[BUILD] =======================================================================
 | 
					[BUILD] =======================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Why does the linker complain about undefined symbols?
 | 
					* Why does the linker complain about undefined symbols?
 | 
				
			||||||
@@ -464,7 +524,7 @@ when you run the test suite (using "make test").  The message returned is
 | 
				
			|||||||
"bc: 1 not implemented".
 | 
					"bc: 1 not implemented".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The best way to deal with this is to find another implementation of bc
 | 
					The best way to deal with this is to find another implementation of bc
 | 
				
			||||||
and compile/install it.  GNU bc (see http://www.gnu.org/software/software.html
 | 
					and compile/install it.  GNU bc (see <URL: http://www.gnu.org/software/software.html>
 | 
				
			||||||
for download instructions) can be safely used, for example.
 | 
					for download instructions) can be safely used, for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -475,7 +535,7 @@ that the OpenSSL bntest throws at it.  This gets triggered when you run the
 | 
				
			|||||||
test suite (using "make test").  The message returned is "bc: stack empty".
 | 
					test suite (using "make test").  The message returned is "bc: stack empty".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The best way to deal with this is to find another implementation of bc
 | 
					The best way to deal with this is to find another implementation of bc
 | 
				
			||||||
and compile/install it.  GNU bc (see http://www.gnu.org/software/software.html
 | 
					and compile/install it.  GNU bc (see <URL: http://www.gnu.org/software/software.html>
 | 
				
			||||||
for download instructions) can be safely used, for example.
 | 
					for download instructions) can be safely used, for example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -668,6 +728,46 @@ never make sense, and tend to emerge when you least expect them. In order
 | 
				
			|||||||
to identify one, drop optimization level, e.g. by editing CFLAG line in
 | 
					to identify one, drop optimization level, e.g. by editing CFLAG line in
 | 
				
			||||||
top-level Makefile, recompile and re-run the test.
 | 
					top-level Makefile, recompile and re-run the test.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* I think I've found a bug, what should I do?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you are a new user then it is quite likely you haven't found a bug and
 | 
				
			||||||
 | 
					something is happening you aren't familiar with. Check this FAQ, the associated
 | 
				
			||||||
 | 
					documentation and the mailing lists for similar queries. If you are still
 | 
				
			||||||
 | 
					unsure whether it is a bug or not submit a query to the openssl-users mailing
 | 
				
			||||||
 | 
					list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* I'm SURE I've found a bug, how do I report it?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bug reports with no security implications should be sent to the request
 | 
				
			||||||
 | 
					tracker. This can be done by mailing the report to <rt@openssl.org> (or its
 | 
				
			||||||
 | 
					alias <openssl-bugs@openssl.org>), please note that messages sent to the
 | 
				
			||||||
 | 
					request tracker also appear in the public openssl-dev mailing list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The report should be in plain text. Any patches should be sent as
 | 
				
			||||||
 | 
					plain text attachments because some mailers corrupt patches sent inline.
 | 
				
			||||||
 | 
					If your issue affects multiple versions of OpenSSL check any patches apply
 | 
				
			||||||
 | 
					cleanly and, if possible include patches to each affected version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The report should be given a meaningful subject line briefly summarising the
 | 
				
			||||||
 | 
					issue. Just "bug in OpenSSL" or "bug in OpenSSL 0.9.8n" is not very helpful.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By sending reports to the request tracker the bug can then be given a priority
 | 
				
			||||||
 | 
					and assigned to the appropriate maintainer. The history of discussions can be
 | 
				
			||||||
 | 
					accessed and if the issue has been addressed or a reason why not. If patches
 | 
				
			||||||
 | 
					are only sent to openssl-dev they can be mislaid if a team member has to
 | 
				
			||||||
 | 
					wade through months of old messages to review the discussion.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See also <URL: http://www.openssl.org/support/rt.html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* I've found a security issue, how do I report it?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you think your bug has security implications then please send it to
 | 
				
			||||||
 | 
					openssl-security@openssl.org if you don't get a prompt reply at least 
 | 
				
			||||||
 | 
					acknowledging receipt then resend or mail it directly to one of the
 | 
				
			||||||
 | 
					more active team members (e.g. Steve).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[PROG] ========================================================================
 | 
					[PROG] ========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Is OpenSSL thread-safe?
 | 
					* Is OpenSSL thread-safe?
 | 
				
			||||||
@@ -680,8 +780,10 @@ file.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Multi-threaded applications must provide two callback functions to
 | 
					Multi-threaded applications must provide two callback functions to
 | 
				
			||||||
OpenSSL by calling CRYPTO_set_locking_callback() and
 | 
					OpenSSL by calling CRYPTO_set_locking_callback() and
 | 
				
			||||||
CRYPTO_set_id_callback().  This is described in the threads(3)
 | 
					CRYPTO_set_id_callback(), for all versions of OpenSSL up to and
 | 
				
			||||||
manpage.
 | 
					including 0.9.8[abc...]. As of version 1.0.0, CRYPTO_set_id_callback()
 | 
				
			||||||
 | 
					and associated APIs are deprecated by CRYPTO_THREADID_set_callback()
 | 
				
			||||||
 | 
					and friends. This is described in the threads(3) manpage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* I've compiled a program under Windows and it crashes: why?
 | 
					* I've compiled a program under Windows and it crashes: why?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -822,11 +924,11 @@ code itself (the hex digits after the second colon).
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
* Why do I get errors about unknown algorithms?
 | 
					* Why do I get errors about unknown algorithms?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This can happen under several circumstances such as reading in an
 | 
					The cause is forgetting to load OpenSSL's table of algorithms with
 | 
				
			||||||
encrypted private key or attempting to decrypt a PKCS#12 file. The cause
 | 
					OpenSSL_add_all_algorithms(). See the manual page for more information. This
 | 
				
			||||||
is forgetting to load OpenSSL's table of algorithms with
 | 
					can cause several problems such as being unable to read in an encrypted
 | 
				
			||||||
OpenSSL_add_all_algorithms(). See the manual page for more information.
 | 
					PEM file, unable to decrypt a PKCS#12 file or signature failure when
 | 
				
			||||||
 | 
					verifying certificates.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Why can't the OpenSSH configure script detect OpenSSL?
 | 
					* Why can't the OpenSSH configure script detect OpenSSL?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -894,5 +996,46 @@ thread-safe):
 | 
				
			|||||||
  ERR_free_strings(), EVP_cleanup() and CRYPTO_cleanup_all_ex_data().
 | 
					  ERR_free_strings(), EVP_cleanup() and CRYPTO_cleanup_all_ex_data().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===============================================================================
 | 
					* Why does Valgrind complain about the use of uninitialized data?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When OpenSSL's PRNG routines are called to generate random numbers the supplied
 | 
				
			||||||
 | 
					buffer contents are mixed into the entropy pool: so it technically does not
 | 
				
			||||||
 | 
					matter whether the buffer is initialized at this point or not.  Valgrind (and
 | 
				
			||||||
 | 
					other test tools) will complain about this. When using Valgrind, make sure the
 | 
				
			||||||
 | 
					OpenSSL library has been compiled with the PURIFY macro defined (-DPURIFY)
 | 
				
			||||||
 | 
					to get rid of these warnings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Why doesn't a memory BIO work when a file does?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This can occur in several cases for example reading an S/MIME email message.
 | 
				
			||||||
 | 
					The reason is that a memory BIO can do one of two things when all the data
 | 
				
			||||||
 | 
					has been read from it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The default behaviour is to indicate that no more data is available and that
 | 
				
			||||||
 | 
					the call should be retried, this is to allow the application to fill up the BIO
 | 
				
			||||||
 | 
					again if necessary.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Alternatively it can indicate that no more data is available and that EOF has
 | 
				
			||||||
 | 
					been reached.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If a memory BIO is to behave in the same way as a file this second behaviour
 | 
				
			||||||
 | 
					is needed. This must be done by calling:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   BIO_set_mem_eof_return(bio, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See the manual pages for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Where are the declarations and implementations of d2i_X509() etc?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are defined and implemented by macros of the form:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 DECLARE_ASN1_FUNCTIONS(X509) and IMPLEMENT_ASN1_FUNCTIONS(X509)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The implementation passes an ASN1 "template" defining the structure into an
 | 
				
			||||||
 | 
					ASN1 interpreter using generalised functions such as ASN1_item_d2i().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===============================================================================
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								INSTALL
									
									
									
									
									
								
							@@ -158,7 +158,7 @@
 | 
				
			|||||||
     standard headers).  If it is a problem with OpenSSL itself, please
 | 
					     standard headers).  If it is a problem with OpenSSL itself, please
 | 
				
			||||||
     report the problem to <openssl-bugs@openssl.org> (note that your
 | 
					     report the problem to <openssl-bugs@openssl.org> (note that your
 | 
				
			||||||
     message will be recorded in the request tracker publicly readable
 | 
					     message will be recorded in the request tracker publicly readable
 | 
				
			||||||
     via http://www.openssl.org/support/rt2.html and will be forwarded to a
 | 
					     via http://www.openssl.org/support/rt.html and will be forwarded to a
 | 
				
			||||||
     public mailing list). Include the output of "make report" in your message.
 | 
					     public mailing list). Include the output of "make report" in your message.
 | 
				
			||||||
     Please check out the request tracker. Maybe the bug was already
 | 
					     Please check out the request tracker. Maybe the bug was already
 | 
				
			||||||
     reported or has already been fixed.
 | 
					     reported or has already been fixed.
 | 
				
			||||||
@@ -180,7 +180,7 @@
 | 
				
			|||||||
     in Makefile.ssl and run "make clean; make". Please send a bug
 | 
					     in Makefile.ssl and run "make clean; make". Please send a bug
 | 
				
			||||||
     report to <openssl-bugs@openssl.org>, including the output of
 | 
					     report to <openssl-bugs@openssl.org>, including the output of
 | 
				
			||||||
     "make report" in order to be added to the request tracker at
 | 
					     "make report" in order to be added to the request tracker at
 | 
				
			||||||
     http://www.openssl.org/support/rt2.html.
 | 
					     http://www.openssl.org/support/rt.html.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  4. If everything tests ok, install OpenSSL with
 | 
					  4. If everything tests ok, install OpenSSL with
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										130
									
								
								INSTALL.NW
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								INSTALL.NW
									
									
									
									
									
								
							@@ -8,58 +8,62 @@ Notes about building OpenSSL for NetWare.
 | 
				
			|||||||
BUILD PLATFORM:
 | 
					BUILD PLATFORM:
 | 
				
			||||||
---------------
 | 
					---------------
 | 
				
			||||||
The build scripts (batch files, perl scripts, etc) have been developed and
 | 
					The build scripts (batch files, perl scripts, etc) have been developed and
 | 
				
			||||||
tested on W2K.  The scripts should run fine on other Windows
 | 
					tested on W2K.  The scripts should run fine on other Windows platforms
 | 
				
			||||||
platforms (NT, Win9x, WinXP) but they haven't been tested.  They may require 
 | 
					(NT, Win9x, WinXP) but they have not been tested.  They may require some
 | 
				
			||||||
some modifications.
 | 
					modifications.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Supported NetWare Platforms - NetWare 5.x, NetWare 6.x:
 | 
					Supported NetWare Platforms - NetWare 5.x, NetWare 6.x:
 | 
				
			||||||
------------------------------------------
 | 
					-------------------------------------------------------
 | 
				
			||||||
OpenSSL uses the WinSock interfaces introduced in NetWare 5.  Therefore,
 | 
					OpenSSL can either use the WinSock interfaces introduced in NetWare 5,
 | 
				
			||||||
previous versions of NetWare, 4.x and 3.x, are not supported.
 | 
					or the BSD socket interface.  Previous versions of NetWare, 4.x and 3.x,
 | 
				
			||||||
 | 
					are only supported if OpenSSL is build for CLIB and BSD sockets;
 | 
				
			||||||
 | 
					WinSock builds only support NetWare 5 and up.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
On NetWare there are two c-runtime libraries.  There is the legacy CLIB 
 | 
					On NetWare there are two c-runtime libraries.  There is the legacy CLIB 
 | 
				
			||||||
interfaces and the newer LibC interfaces.  Being ANSI-C libraries, the 
 | 
					interfaces and the newer LIBC interfaces.  Being ANSI-C libraries, the 
 | 
				
			||||||
functionality in CLIB and LibC is similar but the LibC interfaces are built 
 | 
					functionality in CLIB and LIBC is similar but the LIBC interfaces are built 
 | 
				
			||||||
using Novell Kernal Services (NKS) which is designed to leverage 
 | 
					using Novell Kernal Services (NKS) which is designed to leverage 
 | 
				
			||||||
multi-processor environments.
 | 
					multi-processor environments.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The NetWare port of OpenSSL can configured to build using CLIB or LibC.  The 
 | 
					The NetWare port of OpenSSL can be configured to build using CLIB or LIBC.
 | 
				
			||||||
CLIB build was developed and tested using NetWare 5.0 sp6.0a.  The LibC 
 | 
					The CLIB build was developed and tested using NetWare 5.0 sp6.0a.  The LIBC 
 | 
				
			||||||
build was developed and tested using the NetWare 6.0 FCS.  
 | 
					build was developed and tested using the NetWare 6.0 FCS.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The necessary LibC functionality ships with NetWare 6.  However, earlier 
 | 
					The necessary LIBC functionality ships with NetWare 6.  However, earlier 
 | 
				
			||||||
NetWare 5.x versions will require updates in order to run the OpenSSL LibC
 | 
					NetWare 5.x versions will require updates in order to run the OpenSSL LIBC
 | 
				
			||||||
build.
 | 
					build (NetWare 5.1 SP8 is known to work).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
As of June 2005, the LibC build can be configured to use BSD sockets instead
 | 
					As of June 2005, the LIBC build can be configured to use BSD sockets instead
 | 
				
			||||||
of WinSock sockets. Call Configure (usually through netware\build.bat) using
 | 
					of WinSock sockets. Call Configure (usually through netware\build.bat) using
 | 
				
			||||||
a target of "netware-libc-bsdsock" instead of "netware-libc".
 | 
					a target of "netware-libc-bsdsock" instead of "netware-libc".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As of June 2007, support for CLIB and BSD sockets is also now available
 | 
				
			||||||
 | 
					using a target of "netware-clib-bsdsock" instead of "netware-clib";
 | 
				
			||||||
 | 
					also gcc builds are now supported on both Linux and Win32 (post 0.9.8e).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REQUIRED TOOLS:
 | 
					REQUIRED TOOLS:
 | 
				
			||||||
---------------
 | 
					---------------
 | 
				
			||||||
Based upon the configuration and build options used, some or all of the
 | 
					Based upon the configuration and build options used, some or all of the
 | 
				
			||||||
following tools may be required:
 | 
					following tools may be required:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
* Perl for Win32 - required (http://www.activestate.com/ActivePerl)
 | 
					* Perl for Win32 - required (http://www.activestate.com/ActivePerl)
 | 
				
			||||||
   Used to run the various perl scripts on the build platform.
 | 
					   Used to run the various perl scripts on the build platform.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
* Perl 5.8.0 for NetWare v3.20 (or later) - required 
 | 
					* Perl 5.8.0 for NetWare v3.20 (or later) - required 
 | 
				
			||||||
   (http://developer.novell.com) Used to run the test script on NetWare 
 | 
					   (http://developer.novell.com) Used to run the test script on NetWare 
 | 
				
			||||||
   after building.
 | 
					   after building.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Compiler / Linker - required:
 | 
				
			||||||
 | 
					   Metrowerks CodeWarrior PDK 2.1 (or later) for NetWare (commercial):
 | 
				
			||||||
 | 
					      Provides command line tools used for building.
 | 
				
			||||||
 | 
					      Tools:
 | 
				
			||||||
 | 
					      mwccnlm.exe  - C/C++ Compiler for NetWare
 | 
				
			||||||
 | 
					      mwldnlm.exe  - Linker for NetWare
 | 
				
			||||||
 | 
					      mwasmnlm.exe - x86 assembler for NetWare (if using assembly option)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Metrowerks CodeWarrior PDK 2.1 (or later) for NetWare - required:
 | 
					   gcc / nlmconv Cross-Compiler, available from Novell Forge (free):
 | 
				
			||||||
   Provides command line tools used for building.
 | 
					         http://forge.novell.com/modules/xfmod/project/?aunixnw
 | 
				
			||||||
 | 
					 | 
				
			||||||
   Tools:
 | 
					 | 
				
			||||||
   mwccnlm.exe  - C/C++ Compiler for NetWare
 | 
					 | 
				
			||||||
   mwldnlm.exe  - Linker for NetWare
 | 
					 | 
				
			||||||
   mwasmnlm.exe - x86 assembler for NetWare (if using assembly option)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Assemblers - optional:
 | 
					* Assemblers - optional:
 | 
				
			||||||
   If you intend to build using the assembly options you will need an
 | 
					   If you intend to build using the assembly options you will need an
 | 
				
			||||||
@@ -79,11 +83,11 @@ following tools may be required:
 | 
				
			|||||||
   In order to build you will need a make tool.  Two make tools are
 | 
					   In order to build you will need a make tool.  Two make tools are
 | 
				
			||||||
   supported, GNU make (gmake.exe) or Microsoft nmake.exe.
 | 
					   supported, GNU make (gmake.exe) or Microsoft nmake.exe.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   gmake.exe - GNU make for Windows (version 3.75 used for development)
 | 
					   make.exe - GNU make for Windows (version 3.75 used for development)
 | 
				
			||||||
         http://www.gnu.org/software/make/make.html
 | 
					         http://gnuwin32.sourceforge.net/packages/make.htm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   nmake.exe - Microsoft make (Version 6.00.8168.0 used for development)
 | 
					   nmake.exe - Microsoft make (Version 6.00.8168.0 used for development)
 | 
				
			||||||
 | 
					         http://support.microsoft.com/kb/132084/EN-US/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Novell Developer Kit (NDK) - required: (http://developer.novell.com)
 | 
					* Novell Developer Kit (NDK) - required: (http://developer.novell.com)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -123,14 +127,14 @@ following tools may be required:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   LIBC - BUILDS:
 | 
					   LIBC - BUILDS:
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
      Libraries for C (LibC) - LibC headers and import files
 | 
					      Libraries for C (LIBC) - LIBC headers and import files
 | 
				
			||||||
         If you are going to build a LibC version of OpenSSL, you will
 | 
					         If you are going to build a LIBC version of OpenSSL, you will
 | 
				
			||||||
         need the LibC headers and imports.  The March 14, 2002 NDK release or
 | 
					         need the LIBC headers and imports.  The March 14, 2002 NDK release or
 | 
				
			||||||
         later is required.  
 | 
					         later is required.  
 | 
				
			||||||
         
 | 
					         
 | 
				
			||||||
         NOTE: The LibC SDK includes the necessary WinSock2 support.  It
 | 
					         NOTE: The LIBC SDK includes the necessary WinSock2 support.
 | 
				
			||||||
         It is not necessary to download the WinSock2 Developer when building
 | 
					         It is not necessary to download the WinSock2 NDK when building for
 | 
				
			||||||
         for LibC. The LibC SDK also includes the appropriate BSD socket support
 | 
					         LIBC. The LIBC SDK also includes the appropriate BSD socket support
 | 
				
			||||||
         if configuring to use BSD sockets.
 | 
					         if configuring to use BSD sockets.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -143,33 +147,36 @@ The set_env.bat file is a template you can use to set up the path
 | 
				
			|||||||
and environment variables you will need to build.  Modify the
 | 
					and environment variables you will need to build.  Modify the
 | 
				
			||||||
various lines to point to YOUR tools and run set_env.bat.
 | 
					various lines to point to YOUR tools and run set_env.bat.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   netware\set_env.bat [target]
 | 
					   netware\set_env.bat <target> [compiler]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      target        - "netware-clib" - CLib NetWare build
 | 
					      target        - "netware-clib" - CLIB NetWare build
 | 
				
			||||||
                    - "netware-libc" - LibC NetWare build
 | 
					                    - "netware-libc" - LIBC NetWare build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      compiler      - "gnuc"         - GNU GCC Compiler
 | 
				
			||||||
 | 
					                    - "codewarrior"  - MetroWerks CodeWarrior (default)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you don't use set_env.bat, you will need to set up the following
 | 
					If you don't use set_env.bat, you will need to set up the following
 | 
				
			||||||
environment variables:
 | 
					environment variables:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   path - Set path to point to the tools you will use.
 | 
					   PATH - Set PATH to point to the tools you will use.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   MWCIncludes - The location of the NDK include files.
 | 
					   INCLUDE - The location of the NDK include files.
 | 
				
			||||||
         
 | 
					         
 | 
				
			||||||
            CLIB ex: set MWCIncludes=c:\ndk\nwsdk\include\nlm
 | 
					            CLIB ex: set INCLUDE=c:\ndk\nwsdk\include\nlm
 | 
				
			||||||
            LibC ex: set MWCIncludes=c:\ndk\libc\include
 | 
					            LIBC ex: set INCLUDE=c:\ndk\libc\include
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   PRELUDE - The absolute path of the prelude object to link with.  For
 | 
					   PRELUDE - The absolute path of the prelude object to link with.  For
 | 
				
			||||||
            a CLIB build it is recommended you use the "clibpre.o" files shipped
 | 
					            a CLIB build it is recommended you use the "clibpre.o" files shipped
 | 
				
			||||||
            with the Metrowerks PDK for NetWare.  For a LibC build you should 
 | 
					            with the Metrowerks PDK for NetWare.  For a LIBC build you should 
 | 
				
			||||||
            use the "libcpre.o" file delivered with the LibC NDK components.
 | 
					            use the "libcpre.o" file delivered with the LIBC NDK components.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CLIB ex: set PRELUDE=c:\ndk\nwsdk\imports\clibpre.o
 | 
					            CLIB ex: set PRELUDE=c:\ndk\nwsdk\imports\clibpre.o
 | 
				
			||||||
            LibC ex: set PRELUDE=c:\ndk\libc\imports\libcpre.o
 | 
					            LIBC ex: set PRELUDE=c:\ndk\libc\imports\libcpre.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   IMPORTS - The locaton of the NDK import files.
 | 
					   IMPORTS - The locaton of the NDK import files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CLIB ex: set IMPORTS=c:\ndk\nwsdk\imports
 | 
					            CLIB ex: set IMPORTS=c:\ndk\nwsdk\imports
 | 
				
			||||||
            LibC ex: set IMPORTS=c:\ndk\libc\imports
 | 
					            LIBC ex: set IMPORTS=c:\ndk\libc\imports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In order to build, you need to run the Perl scripts to configure the build
 | 
					In order to build, you need to run the Perl scripts to configure the build
 | 
				
			||||||
@@ -182,9 +189,10 @@ the assembly code.  Always run build.bat from the "openssl" directory.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   netware\build [target] [debug opts] [assembly opts] [configure opts]
 | 
					   netware\build [target] [debug opts] [assembly opts] [configure opts]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      target        - "netware-clib" - CLib NetWare build (WinSock Sockets)
 | 
					      target        - "netware-clib" - CLIB NetWare build (WinSock Sockets)
 | 
				
			||||||
                    - "netware-libc" - LibC NetWare build (WinSock Sockets)
 | 
					                    - "netware-clib-bsdsock" - CLIB NetWare build (BSD Sockets)
 | 
				
			||||||
                    - "netware-libc-bsdsock" - LibC NetWare build (BSD Sockets)
 | 
					                    - "netware-libc" - LIBC NetWare build (WinSock Sockets)
 | 
				
			||||||
 | 
					                    - "netware-libc-bsdsock" - LIBC NetWare build (BSD Sockets)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
      debug opts    - "debug"  - build debug
 | 
					      debug opts    - "debug"  - build debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -193,25 +201,27 @@ the assembly code.  Always run build.bat from the "openssl" directory.
 | 
				
			|||||||
                      "no-asm"   - don't use assembly
 | 
					                      "no-asm"   - don't use assembly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      configure opts- all unrecognized arguments are passed to the
 | 
					      configure opts- all unrecognized arguments are passed to the
 | 
				
			||||||
                      perl configure script
 | 
					                      perl 'configure' script. See that script for
 | 
				
			||||||
 | 
					                      internal documentation regarding options that
 | 
				
			||||||
 | 
					                      are available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   examples:
 | 
					   examples:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CLIB build, debug, without assembly:
 | 
					      CLIB build, debug, without assembly:
 | 
				
			||||||
         netware\build.bat netware-clib debug no-asm
 | 
					         netware\build.bat netware-clib debug no-asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      LibC build, non-debug, using NASM assembly:
 | 
					      LIBC build, non-debug, using NASM assembly, add mdc2 support:
 | 
				
			||||||
         netware\build.bat netware-libc nw-nasm
 | 
					         netware\build.bat netware-libc nw-nasm enable-mdc2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      LibC build, BSD sockets, non-debug, without assembly:
 | 
					      LIBC build, BSD sockets, non-debug, without assembly:
 | 
				
			||||||
         netware\build.bat netware-libc-bsdsock no-asm
 | 
					         netware\build.bat netware-libc-bsdsock no-asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Running build.bat generates a make file to be processed by your make 
 | 
					Running build.bat generates a make file to be processed by your make 
 | 
				
			||||||
tool (gmake or nmake):
 | 
					tool (gmake or nmake):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   CLIB ex: gmake -f netware\nlm_clib_dbg.mak 
 | 
					   CLIB ex: gmake -f netware\nlm_clib_dbg.mak 
 | 
				
			||||||
   LibC ex: gmake -f netware\nlm_libc.mak 
 | 
					   LIBC ex: gmake -f netware\nlm_libc.mak 
 | 
				
			||||||
   LibC ex: gmake -f netware\nlm_libc_bsdsock.mak 
 | 
					   LIBC ex: gmake -f netware\nlm_libc_bsdsock.mak 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can also run the build scripts manually if you do not want to use the
 | 
					You can also run the build scripts manually if you do not want to use the
 | 
				
			||||||
@@ -220,7 +230,7 @@ subdirectory (in the order listed below):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   perl configure no-asm [other config opts] [netware-clib|netware-libc|netware-libc-bsdsock]
 | 
					   perl configure no-asm [other config opts] [netware-clib|netware-libc|netware-libc-bsdsock]
 | 
				
			||||||
      configures no assembly build for specified netware environment
 | 
					      configures no assembly build for specified netware environment
 | 
				
			||||||
      (CLIB or LibC).
 | 
					      (CLIB or LIBC).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   perl util\mkfiles.pl >MINFO
 | 
					   perl util\mkfiles.pl >MINFO
 | 
				
			||||||
      generates a listing of source files (used by mk1mf)
 | 
					      generates a listing of source files (used by mk1mf)
 | 
				
			||||||
@@ -250,12 +260,12 @@ The output from the build is placed in the following directories:
 | 
				
			|||||||
      tmp_nw_clib         - temporary build files
 | 
					      tmp_nw_clib         - temporary build files
 | 
				
			||||||
      outinc_nw_clib      - necesary include files
 | 
					      outinc_nw_clib      - necesary include files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   LibC Debug build:
 | 
					   LIBC Debug build:
 | 
				
			||||||
      out_nw_libc.dbg     - static libs & test nlm(s)
 | 
					      out_nw_libc.dbg     - static libs & test nlm(s)
 | 
				
			||||||
      tmp_nw_libc.dbg     - temporary build files
 | 
					      tmp_nw_libc.dbg     - temporary build files
 | 
				
			||||||
      outinc_nw_libc      - necessary include files
 | 
					      outinc_nw_libc      - necessary include files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   LibC Non-debug build:
 | 
					   LIBC Non-debug build:
 | 
				
			||||||
      out_nw_libc         - static libs & test nlm(s)
 | 
					      out_nw_libc         - static libs & test nlm(s)
 | 
				
			||||||
      tmp_nw_libc         - temporary build files
 | 
					      tmp_nw_libc         - temporary build files
 | 
				
			||||||
      outinc_nw_libc      - necesary include files
 | 
					      outinc_nw_libc      - necesary include files
 | 
				
			||||||
@@ -281,7 +291,7 @@ To run cpy_tests.bat:
 | 
				
			|||||||
      NetWare drive    - drive letter of mapped drive
 | 
					      NetWare drive    - drive letter of mapped drive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CLIB ex: netware\cpy_tests out_nw_clib m:
 | 
					      CLIB ex: netware\cpy_tests out_nw_clib m:
 | 
				
			||||||
      LibC ex: netware\cpy_tests out_nw_libc m:
 | 
					      LIBC ex: netware\cpy_tests out_nw_libc m:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The Perl script, "do_tests.pl", in the "OpenSSL" directory on the server
 | 
					The Perl script, "do_tests.pl", in the "OpenSSL" directory on the server
 | 
				
			||||||
@@ -356,9 +366,9 @@ clean up the resources!
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Multi-threaded Development
 | 
					Multi-threaded Development
 | 
				
			||||||
---------------------------
 | 
					---------------------------
 | 
				
			||||||
The NetWare version of OpenSSL is thread-safe however, multi-threaded
 | 
					The NetWare version of OpenSSL is thread-safe, however multi-threaded
 | 
				
			||||||
applications must provide the necessary locking function callbacks.  This
 | 
					applications must provide the necessary locking function callbacks.  This
 | 
				
			||||||
is described in doc\threads.doc.  The file "openssl\crypto\threads\mttest.c"
 | 
					is described in doc\threads.doc.  The file "openssl-x.x.x\crypto\threads\mttest.c"
 | 
				
			||||||
is a multi-threaded test program and demonstrates the locking functions.
 | 
					is a multi-threaded test program and demonstrates the locking functions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -428,7 +438,7 @@ Makefile "vclean"
 | 
				
			|||||||
------------------
 | 
					------------------
 | 
				
			||||||
The generated makefile has a "vclean" target which cleans up the build
 | 
					The generated makefile has a "vclean" target which cleans up the build
 | 
				
			||||||
directories.  If you have been building successfully and suddenly
 | 
					directories.  If you have been building successfully and suddenly
 | 
				
			||||||
experience problems, use "vclean" (gmake -f netware\nlm.mak vclean) and retry.
 | 
					experience problems, use "vclean" (gmake -f netware\nlm_xxxx.mak vclean) and retry.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"Undefined Symbol" Linker errors
 | 
					"Undefined Symbol" Linker errors
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -12,7 +12,7 @@
 | 
				
			|||||||
  ---------------
 | 
					  ---------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 * Copyright (c) 1998-2007 The OpenSSL Project.  All rights reserved.
 | 
					 * Copyright (c) 1998-2011 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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ OSErr AppendErrorMessageToHandle(Handle inoutHandle);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//	A bunch of evil macros that would be uneccessary if I were always using C++ !
 | 
					//	A bunch of evil macros that would be unnecessary if I were always using C++ !
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SetErrorMessageAndBailIfNil(theArg,theMessage)								\
 | 
					#define SetErrorMessageAndBailIfNil(theArg,theMessage)								\
 | 
				
			||||||
{																					\
 | 
					{																					\
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										87
									
								
								Makefile.org
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								Makefile.org
									
									
									
									
									
								
							@@ -71,6 +71,7 @@ PERL= perl
 | 
				
			|||||||
TAR= tar
 | 
					TAR= tar
 | 
				
			||||||
TARFLAGS= --no-recursion
 | 
					TARFLAGS= --no-recursion
 | 
				
			||||||
MAKEDEPPROG=makedepend
 | 
					MAKEDEPPROG=makedepend
 | 
				
			||||||
 | 
					LIBDIR=lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We let the C compiler driver to take care of .s files. This is done in
 | 
					# We let the C compiler driver to take care of .s files. This is done in
 | 
				
			||||||
# order to be excused from maintaining a separate set of architecture
 | 
					# order to be excused from maintaining a separate set of architecture
 | 
				
			||||||
@@ -112,7 +113,7 @@ LIBZLIB=
 | 
				
			|||||||
# $(INSTALLTOP) for this build make be different so hard
 | 
					# $(INSTALLTOP) for this build make be different so hard
 | 
				
			||||||
# code the path.
 | 
					# code the path.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FIPSLIBDIR=/usr/local/ssl/lib/
 | 
					FIPSLIBDIR=/usr/local/ssl/$(LIBDIR)/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This is set to "y" if fipscanister.o is compiled internally as
 | 
					# This is set to "y" if fipscanister.o is compiled internally as
 | 
				
			||||||
# opposed to coming from an external validated location.
 | 
					# opposed to coming from an external validated location.
 | 
				
			||||||
@@ -142,7 +143,7 @@ SDIRS=  \
 | 
				
			|||||||
	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 jpake
 | 
				
			||||||
# 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...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -172,7 +173,7 @@ SHARED_LDFLAGS=
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
GENERAL=        Makefile
 | 
					GENERAL=        Makefile
 | 
				
			||||||
BASENAME=       openssl
 | 
					BASENAME=       openssl
 | 
				
			||||||
NAME=           $(BASENAME)-fips-$(VERSION)
 | 
					NAME=           $(BASENAME)-$(VERSION)
 | 
				
			||||||
TARFILE=        $(NAME).tar
 | 
					TARFILE=        $(NAME).tar
 | 
				
			||||||
WTARFILE=       $(NAME)-win.tar
 | 
					WTARFILE=       $(NAME)-win.tar
 | 
				
			||||||
EXHEADER=       e_os2.h
 | 
					EXHEADER=       e_os2.h
 | 
				
			||||||
@@ -200,9 +201,10 @@ BUILDENV=	PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
 | 
				
			|||||||
		CC='${CC}' CFLAG='${CFLAG}' 			\
 | 
							CC='${CC}' CFLAG='${CFLAG}' 			\
 | 
				
			||||||
		AS='${CC}' ASFLAG='${CFLAG} -c'			\
 | 
							AS='${CC}' ASFLAG='${CFLAG} -c'			\
 | 
				
			||||||
		AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}'	\
 | 
							AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}'	\
 | 
				
			||||||
		SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib'	\
 | 
							SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/$(LIBDIR)'	\
 | 
				
			||||||
		INSTALL_PREFIX='${INSTALL_PREFIX}'		\
 | 
							INSTALL_PREFIX='${INSTALL_PREFIX}'		\
 | 
				
			||||||
		INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}'	\
 | 
							INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}'	\
 | 
				
			||||||
 | 
							LIBDIR='${LIBDIR}' \
 | 
				
			||||||
		MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \
 | 
							MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \
 | 
				
			||||||
		DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}'	\
 | 
							DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}'	\
 | 
				
			||||||
		MAKEDEPPROG='${MAKEDEPPROG}'			\
 | 
							MAKEDEPPROG='${MAKEDEPPROG}'			\
 | 
				
			||||||
@@ -219,7 +221,8 @@ 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}' \
 | 
							FIPSLIBDIR='${FIPSLIBDIR}'			\
 | 
				
			||||||
 | 
							FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}"	\
 | 
				
			||||||
		FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}'	\
 | 
							FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}'	\
 | 
				
			||||||
		FIPS_EX_OBJ='${FIPS_EX_OBJ}'	\
 | 
							FIPS_EX_OBJ='${FIPS_EX_OBJ}'	\
 | 
				
			||||||
		THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
 | 
							THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
 | 
				
			||||||
@@ -240,7 +243,8 @@ BUILDENV=	PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
 | 
				
			|||||||
# subdirectories defined in $(DIRS).  It requires that the target
 | 
					# subdirectories defined in $(DIRS).  It requires that the target
 | 
				
			||||||
# is given through the shell variable `target'.
 | 
					# is given through the shell variable `target'.
 | 
				
			||||||
BUILD_CMD=  if [ -d "$$dir" ]; then \
 | 
					BUILD_CMD=  if [ -d "$$dir" ]; then \
 | 
				
			||||||
	    (	cd $$dir && echo "making $$target in $$dir..." && \
 | 
						    (	[ $$target != all -a -z "$(FIPSCANLIB)" ] && FIPSCANLIB=/dev/null; \
 | 
				
			||||||
 | 
							cd $$dir && echo "making $$target in $$dir..." && \
 | 
				
			||||||
		$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
 | 
							$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
 | 
				
			||||||
	    ) || exit 1; \
 | 
						    ) || exit 1; \
 | 
				
			||||||
	    fi
 | 
						    fi
 | 
				
			||||||
@@ -331,15 +335,15 @@ build_crypto:
 | 
				
			|||||||
		dir=crypto; target=all; $(BUILD_ONE_CMD)
 | 
							dir=crypto; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_fips:
 | 
					build_fips:
 | 
				
			||||||
	@dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
 | 
						@dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
 | 
				
			||||||
build_ssl:
 | 
					build_ssl: build_crypto
 | 
				
			||||||
	@dir=ssl; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=ssl; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_engines:
 | 
					build_engines: build_crypto
 | 
				
			||||||
	@dir=engines; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=engines; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_apps:
 | 
					build_apps: build_libs
 | 
				
			||||||
	@dir=apps; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=apps; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_tests:
 | 
					build_tests: build_libs
 | 
				
			||||||
	@dir=test; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=test; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
build_tools:
 | 
					build_tools: build_libs
 | 
				
			||||||
	@dir=tools; target=all; $(BUILD_ONE_CMD)
 | 
						@dir=tools; target=all; $(BUILD_ONE_CMD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all_testapps: build_libs build_testapps
 | 
					all_testapps: build_libs build_testapps
 | 
				
			||||||
@@ -355,7 +359,7 @@ libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
 | 
				
			|||||||
			$(AR) libcrypto.a fips/fipscanister.o ; \
 | 
								$(AR) libcrypto.a fips/fipscanister.o ; \
 | 
				
			||||||
		else \
 | 
							else \
 | 
				
			||||||
			if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
 | 
								if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
 | 
				
			||||||
				FIPSLD_CC=$(CC); CC=fips/fipsld; \
 | 
									FIPSLD_CC="$(CC)"; CC=fips/fipsld; \
 | 
				
			||||||
				export CC FIPSLD_CC; \
 | 
									export CC FIPSLD_CC; \
 | 
				
			||||||
			fi; \
 | 
								fi; \
 | 
				
			||||||
			$(MAKE) -e SHLIBDIRS='crypto' build-shared; \
 | 
								$(MAKE) -e SHLIBDIRS='crypto' build-shared; \
 | 
				
			||||||
@@ -378,7 +382,7 @@ libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
 | 
				
			|||||||
fips/fipscanister.o:	build_fips
 | 
					fips/fipscanister.o:	build_fips
 | 
				
			||||||
libfips$(SHLIB_EXT):		fips/fipscanister.o
 | 
					libfips$(SHLIB_EXT):		fips/fipscanister.o
 | 
				
			||||||
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
						@if [ "$(SHLIB_TARGET)" != "" ]; then \
 | 
				
			||||||
		FIPSLD_CC=$(CC); CC=fips/fipsld; export CC FIPSLD_CC; \
 | 
							FIPSLD_CC="$(CC)"; CC=fips/fipsld; export CC FIPSLD_CC; \
 | 
				
			||||||
		$(MAKE) -f Makefile.shared -e $(BUILDENV) \
 | 
							$(MAKE) -f Makefile.shared -e $(BUILDENV) \
 | 
				
			||||||
			CC=$${CC} LIBNAME=fips THIS=$@ \
 | 
								CC=$${CC} LIBNAME=fips THIS=$@ \
 | 
				
			||||||
			LIBEXTRAS=fips/fipscanister.o \
 | 
								LIBEXTRAS=fips/fipscanister.o \
 | 
				
			||||||
@@ -434,7 +438,7 @@ do_$(SHLIB_TARGET):
 | 
				
			|||||||
libcrypto.pc: Makefile
 | 
					libcrypto.pc: Makefile
 | 
				
			||||||
	@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
						@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
				
			||||||
	    echo 'exec_prefix=$${prefix}'; \
 | 
						    echo 'exec_prefix=$${prefix}'; \
 | 
				
			||||||
	    echo 'libdir=$${exec_prefix}/lib'; \
 | 
						    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
 | 
				
			||||||
	    echo 'includedir=$${prefix}/include'; \
 | 
						    echo 'includedir=$${prefix}/include'; \
 | 
				
			||||||
	    echo ''; \
 | 
						    echo ''; \
 | 
				
			||||||
	    echo 'Name: OpenSSL-libcrypto'; \
 | 
						    echo 'Name: OpenSSL-libcrypto'; \
 | 
				
			||||||
@@ -447,7 +451,7 @@ libcrypto.pc: Makefile
 | 
				
			|||||||
libssl.pc: Makefile
 | 
					libssl.pc: Makefile
 | 
				
			||||||
	@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
						@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
				
			||||||
	    echo 'exec_prefix=$${prefix}'; \
 | 
						    echo 'exec_prefix=$${prefix}'; \
 | 
				
			||||||
	    echo 'libdir=$${exec_prefix}/lib'; \
 | 
						    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
 | 
				
			||||||
	    echo 'includedir=$${prefix}/include'; \
 | 
						    echo 'includedir=$${prefix}/include'; \
 | 
				
			||||||
	    echo ''; \
 | 
						    echo ''; \
 | 
				
			||||||
	    echo 'Name: OpenSSL'; \
 | 
						    echo 'Name: OpenSSL'; \
 | 
				
			||||||
@@ -460,7 +464,7 @@ libssl.pc: Makefile
 | 
				
			|||||||
openssl.pc: Makefile
 | 
					openssl.pc: Makefile
 | 
				
			||||||
	@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
						@ ( echo 'prefix=$(INSTALLTOP)'; \
 | 
				
			||||||
	    echo 'exec_prefix=$${prefix}'; \
 | 
						    echo 'exec_prefix=$${prefix}'; \
 | 
				
			||||||
	    echo 'libdir=$${exec_prefix}/lib'; \
 | 
						    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
 | 
				
			||||||
	    echo 'includedir=$${prefix}/include'; \
 | 
						    echo 'includedir=$${prefix}/include'; \
 | 
				
			||||||
	    echo ''; \
 | 
						    echo ''; \
 | 
				
			||||||
	    echo 'Name: OpenSSL'; \
 | 
						    echo 'Name: OpenSSL'; \
 | 
				
			||||||
@@ -502,6 +506,9 @@ links:
 | 
				
			|||||||
	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
 | 
						@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
 | 
				
			||||||
	@$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
 | 
						@$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
 | 
				
			||||||
	@set -e; target=links; $(RECURSIVE_BUILD_CMD)
 | 
						@set -e; target=links; $(RECURSIVE_BUILD_CMD)
 | 
				
			||||||
 | 
						@if [ -z "$(FIPSCANLIB)" ]; then \
 | 
				
			||||||
 | 
							set -e; target=links; dir=fips ; $(BUILD_CMD) ; \
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gentests:
 | 
					gentests:
 | 
				
			||||||
	@(cd test && echo "generating dummy tests (if needed)..." && \
 | 
						@(cd test && echo "generating dummy tests (if needed)..." && \
 | 
				
			||||||
@@ -519,7 +526,7 @@ rehash.time: certs apps
 | 
				
			|||||||
		export OPENSSL OPENSSL_DEBUG_MEMORY; \
 | 
							export OPENSSL OPENSSL_DEBUG_MEMORY; \
 | 
				
			||||||
		$(PERL) tools/c_rehash certs) && \
 | 
							$(PERL) tools/c_rehash certs) && \
 | 
				
			||||||
		touch rehash.time; \
 | 
							touch rehash.time; \
 | 
				
			||||||
	else :; fi
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test:   tests
 | 
					test:   tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -586,7 +593,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-fips-$(VERSION) - |\
 | 
						      --prefix=openssl-$(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
 | 
				
			||||||
@@ -608,13 +615,13 @@ 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_sw
 | 
					install: all install_docs 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 \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(INSTALLTOP)/lib \
 | 
							$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines \
 | 
							$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
 | 
							$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
 | 
							$(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
 | 
							$(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
 | 
							$(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
 | 
				
			||||||
@@ -629,10 +636,10 @@ install_sw:
 | 
				
			|||||||
	do \
 | 
						do \
 | 
				
			||||||
		if [ -f "$$i" ]; then \
 | 
							if [ -f "$$i" ]; then \
 | 
				
			||||||
		(       echo installing $$i; \
 | 
							(       echo installing $$i; \
 | 
				
			||||||
			cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
								cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
			$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
								$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
			chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
								chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
			mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
 | 
								mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
 | 
				
			||||||
		fi; \
 | 
							fi; \
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
	@set -e; if [ -n "$(SHARED_LIBS)" ]; then \
 | 
						@set -e; if [ -n "$(SHARED_LIBS)" ]; then \
 | 
				
			||||||
@@ -642,22 +649,22 @@ install_sw:
 | 
				
			|||||||
			if [ -f "$$i" -o -f "$$i.a" ]; then \
 | 
								if [ -f "$$i" -o -f "$$i.a" ]; then \
 | 
				
			||||||
			(       echo installing $$i; \
 | 
								(       echo installing $$i; \
 | 
				
			||||||
				if [ "$(PLATFORM)" != "Cygwin" ]; then \
 | 
									if [ "$(PLATFORM)" != "Cygwin" ]; then \
 | 
				
			||||||
					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
										cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
					chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
										chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
 | 
										mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
 | 
				
			||||||
				else \
 | 
									else \
 | 
				
			||||||
					c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
 | 
										c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
 | 
				
			||||||
					cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
 | 
										cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
 | 
				
			||||||
					chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
 | 
										chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
 | 
				
			||||||
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
 | 
										mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
 | 
				
			||||||
					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
										cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
					chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
 | 
										chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
 | 
				
			||||||
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
 | 
										mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
 | 
				
			||||||
				fi ); \
 | 
									fi ); \
 | 
				
			||||||
			fi; \
 | 
								fi; \
 | 
				
			||||||
		done; \
 | 
							done; \
 | 
				
			||||||
		(	here="`pwd`"; \
 | 
							(	here="`pwd`"; \
 | 
				
			||||||
			cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
 | 
								cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
 | 
				
			||||||
			$(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
 | 
								$(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
 | 
				
			||||||
		if [ "$(INSTALLTOP)" != "/usr" ]; then \
 | 
							if [ "$(INSTALLTOP)" != "/usr" ]; then \
 | 
				
			||||||
			echo 'OpenSSL shared libraries have been installed in:'; \
 | 
								echo 'OpenSSL shared libraries have been installed in:'; \
 | 
				
			||||||
@@ -666,12 +673,12 @@ install_sw:
 | 
				
			|||||||
			sed -e '1,/^$$/d' doc/openssl-shared.txt; \
 | 
								sed -e '1,/^$$/d' doc/openssl-shared.txt; \
 | 
				
			||||||
		fi; \
 | 
							fi; \
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
 | 
						cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
 | 
				
			||||||
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libcrypto.pc
 | 
						chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
 | 
				
			||||||
	cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
 | 
						cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
 | 
				
			||||||
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libssl.pc
 | 
						chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
 | 
				
			||||||
	cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
 | 
						cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
 | 
				
			||||||
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
 | 
						chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_docs:
 | 
					install_docs:
 | 
				
			||||||
	@$(PERL) $(TOP)/util/mkdir-p.pl \
 | 
						@$(PERL) $(TOP)/util/mkdir-p.pl \
 | 
				
			||||||
@@ -679,7 +686,7 @@ install_docs:
 | 
				
			|||||||
		$(INSTALL_PREFIX)$(MANDIR)/man3 \
 | 
							$(INSTALL_PREFIX)$(MANDIR)/man3 \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(MANDIR)/man5 \
 | 
							$(INSTALL_PREFIX)$(MANDIR)/man5 \
 | 
				
			||||||
		$(INSTALL_PREFIX)$(MANDIR)/man7
 | 
							$(INSTALL_PREFIX)$(MANDIR)/man7
 | 
				
			||||||
	@pod2man="`cd util; ./pod2mantest $(PERL)`"; \
 | 
						@pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
 | 
				
			||||||
	here="`pwd`"; \
 | 
						here="`pwd`"; \
 | 
				
			||||||
	filecase=; \
 | 
						filecase=; \
 | 
				
			||||||
	if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
 | 
						if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -491,23 +491,23 @@ link_app.hpux:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
link_o.aix:
 | 
					link_o.aix:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || :; \
 | 
						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=''; \
 | 
						ALLSYMSFLAGS=''; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
						SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
				
			||||||
	$(LINK_SO_O);
 | 
						$(LINK_SO_O);
 | 
				
			||||||
link_a.aix:
 | 
					link_a.aix:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	OBJECT_MODE=`expr x$(SHARED_LDFLAGS) : 'x\-[a-z]*\(64\)'` || : ; \
 | 
						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) -Wl,-G,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
						SHAREDFLAGS='$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-bexpall,-bnolibpath,-bM:SRE'; \
 | 
				
			||||||
	$(LINK_SO_A_VIA_O)
 | 
						$(LINK_SO_A_VIA_O)
 | 
				
			||||||
link_app.aix:
 | 
					link_app.aix:
 | 
				
			||||||
	LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
 | 
						LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										115
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								NEWS
									
									
									
									
									
								
							@@ -5,6 +5,116 @@
 | 
				
			|||||||
  This file gives a brief overview of the major changes between each OpenSSL
 | 
					  This file gives a brief overview of the major changes between each OpenSSL
 | 
				
			||||||
  release. For more details please read the CHANGES file.
 | 
					  release. For more details please read the CHANGES file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8x and OpenSSL 0.9.8y:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169
 | 
				
			||||||
 | 
					      o Fix OCSP bad key DoS attack CVE-2013-0166
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8w and OpenSSL 0.9.8x:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix DTLS record length checking bug CVE-2012-2333
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8v and OpenSSL 0.9.8w:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for CVE-2012-2131 (corrected fix for 0.9.8 and CVE-2012-2110)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8u and OpenSSL 0.9.8v:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for ASN1 overflow bug CVE-2012-2110
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8t and OpenSSL 0.9.8u:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for CMS/PKCS#7 MMA CVE-2012-0884
 | 
				
			||||||
 | 
					      o Corrected fix for CVE-2011-4619
 | 
				
			||||||
 | 
					      o Various DTLS fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8s and OpenSSL 0.9.8t:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for DTLS DoS issue CVE-2012-0050
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8r and OpenSSL 0.9.8s:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for DTLS plaintext recovery attack CVE-2011-4108
 | 
				
			||||||
 | 
					      o Fix policy check double free error CVE-2011-4109
 | 
				
			||||||
 | 
					      o Clear block padding bytes of SSL 3.0 records CVE-2011-4576
 | 
				
			||||||
 | 
					      o Only allow one SGC handshake restart for SSL/TLS CVE-2011-4619
 | 
				
			||||||
 | 
					      o Check for malformed RFC3779 data CVE-2011-4577
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8q and OpenSSL 0.9.8r:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2011-0014
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8p and OpenSSL 0.9.8q:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-4180
 | 
				
			||||||
 | 
					      o Fix for CVE-2010-4252
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8o and OpenSSL 0.9.8p:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-3864.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8n and OpenSSL 0.9.8o:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-0742.
 | 
				
			||||||
 | 
					      o Various DTLS fixes.
 | 
				
			||||||
 | 
					      o Recognise SHA2 certificates if only SSL algorithms added.
 | 
				
			||||||
 | 
					      o Fix for no-rc4 compilation.
 | 
				
			||||||
 | 
					      o Chil ENGINE unload workaround.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8m and OpenSSL 0.9.8n:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o CFB cipher definition fixes.
 | 
				
			||||||
 | 
					      o Fix security issues CVE-2010-0740 and CVE-2010-0433.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8l and OpenSSL 0.9.8m:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Cipher definition fixes.
 | 
				
			||||||
 | 
					      o Workaround for slow RAND_poll() on some WIN32 versions.
 | 
				
			||||||
 | 
					      o Remove MD2 from algorithm tables.
 | 
				
			||||||
 | 
					      o SPKAC handling fixes.
 | 
				
			||||||
 | 
					      o Support for RFC5746 TLS renegotiation extension.
 | 
				
			||||||
 | 
					      o Compression memory leak fixed.
 | 
				
			||||||
 | 
					      o Compression session resumption fixed.
 | 
				
			||||||
 | 
					      o Ticket and SNI coexistence fixes.
 | 
				
			||||||
 | 
					      o Many fixes to DTLS handling. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8k and OpenSSL 0.9.8l:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Temporary work around for CVE-2009-3555: disable renegotiation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix various build issues.
 | 
				
			||||||
 | 
					      o Fix security issues (CVE-2009-0590, CVE-2009-0591, CVE-2009-0789)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8i and OpenSSL 0.9.8j:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix security issue (CVE-2008-5077)
 | 
				
			||||||
 | 
					      o Merge FIPS 140-2 branch code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8g and OpenSSL 0.9.8h:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o CryptoAPI ENGINE support.
 | 
				
			||||||
 | 
					      o Various precautionary measures.
 | 
				
			||||||
 | 
					      o Fix for bugs affecting certificate request creation.
 | 
				
			||||||
 | 
					      o Support for local machine keyset attribute in PKCS#12 files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8f and OpenSSL 0.9.8g:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Backport of CMS functionality to 0.9.8.
 | 
				
			||||||
 | 
					      o Fixes for bugs introduced with 0.9.8f.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8e and OpenSSL 0.9.8f:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Add gcc 4.2 support.
 | 
				
			||||||
 | 
					      o Add support for AES and SSE2 assembly lanugauge optimization
 | 
				
			||||||
 | 
					        for VC++ build.
 | 
				
			||||||
 | 
					      o Support for RFC4507bis and server name extensions if explicitly 
 | 
				
			||||||
 | 
					        selected at compile time.
 | 
				
			||||||
 | 
					      o DTLS improvements.
 | 
				
			||||||
 | 
					      o RFC4507bis support.
 | 
				
			||||||
 | 
					      o TLS Extensions support.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Major changes between OpenSSL 0.9.8d and OpenSSL 0.9.8e:
 | 
					  Major changes between OpenSSL 0.9.8d and OpenSSL 0.9.8e:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      o Various ciphersuite selection fixes.
 | 
					      o Various ciphersuite selection fixes.
 | 
				
			||||||
@@ -110,6 +220,11 @@
 | 
				
			|||||||
      o Added initial support for Win64.
 | 
					      o Added initial support for Win64.
 | 
				
			||||||
      o Added alternate pkg-config files.
 | 
					      o Added alternate pkg-config files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o FIPS 1.1.1 module linking.
 | 
				
			||||||
 | 
					      o Various ciphersuite selection fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l:
 | 
					  Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      o Introduce limits to prevent malicious key DoS  (CVE-2006-2940)
 | 
					      o Introduce limits to prevent malicious key DoS  (CVE-2006-2940)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								PROBLEMS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								PROBLEMS
									
									
									
									
									
								
							@@ -36,7 +36,9 @@ may differ on your machine.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
As long as Apple doesn't fix the problem with ld, this problem building
 | 
					As long as Apple doesn't fix the problem with ld, this problem building
 | 
				
			||||||
OpenSSL will remain as is.
 | 
					OpenSSL will remain as is. Well, the problem was addressed in 0.9.8f by
 | 
				
			||||||
 | 
					passing -Wl,-search_paths_first, but it's unknown if the flag was
 | 
				
			||||||
 | 
					supported from the initial MacOS X release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Parallell make leads to errors
 | 
					* Parallell make leads to errors
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								README
									
									
									
									
									
								
							@@ -1,16 +1,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 OpenSSL 0.9.8f-fips-dev test version
 | 
					 OpenSSL 0.9.8y 5 Feb 2013
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Copyright (c) 1998-2007 The OpenSSL Project
 | 
					 Copyright (c) 1998-2011 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 an initial port of the FIPS 140-2 code to OpenSSL
 | 
					 | 
				
			||||||
 0.9.8. See the file README.FIPS for brief usage details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 DESCRIPTION
 | 
					 DESCRIPTION
 | 
				
			||||||
 -----------
 | 
					 -----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -118,8 +112,6 @@
 | 
				
			|||||||
 should be contacted if that algorithm is to be used; their web page is
 | 
					 should be contacted if that algorithm is to be used; their web page is
 | 
				
			||||||
 http://www.ascom.ch/.
 | 
					 http://www.ascom.ch/.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 The MDC2 algorithm is patented by IBM.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 NTT and Mitsubishi have patents and pending patents on the Camellia
 | 
					 NTT and Mitsubishi have patents and pending patents on the Camellia
 | 
				
			||||||
 algorithm, but allow use at no charge without requiring an explicit
 | 
					 algorithm, but allow use at no charge without requiring an explicit
 | 
				
			||||||
 licensing agreement: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
 | 
					 licensing agreement: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
 | 
				
			||||||
@@ -145,6 +137,9 @@
 | 
				
			|||||||
 SUPPORT
 | 
					 SUPPORT
 | 
				
			||||||
 -------
 | 
					 -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 See the OpenSSL website www.openssl.org for details of how to obtain
 | 
				
			||||||
 | 
					 commercial technical support.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 If you have any problems with OpenSSL then please take the following steps
 | 
					 If you have any problems with OpenSSL then please take the following steps
 | 
				
			||||||
 first:
 | 
					 first:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -167,10 +162,14 @@
 | 
				
			|||||||
    - Stack Traceback (if the application dumps core)
 | 
					    - Stack Traceback (if the application dumps core)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Report the bug to the OpenSSL project via the Request Tracker
 | 
					 Report the bug to the OpenSSL project via the Request Tracker
 | 
				
			||||||
 (http://www.openssl.org/support/rt2.html) by mail to:
 | 
					 (http://www.openssl.org/support/rt.html) by mail to:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    openssl-bugs@openssl.org
 | 
					    openssl-bugs@openssl.org
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Note that the request tracker should NOT be used for general assistance
 | 
				
			||||||
 | 
					 or support queries. Just because something doesn't work the way you expect
 | 
				
			||||||
 | 
					 does not mean it is necessarily a bug in OpenSSL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Note that mail to openssl-bugs@openssl.org is recorded in the publicly
 | 
					 Note that mail to openssl-bugs@openssl.org is recorded in the publicly
 | 
				
			||||||
 readable request tracker database and is forwarded to a public
 | 
					 readable request tracker database and is forwarded to a public
 | 
				
			||||||
 mailing list. Confidential mail may be sent to openssl-security@openssl.org
 | 
					 mailing list. Confidential mail may be sent to openssl-security@openssl.org
 | 
				
			||||||
@@ -181,10 +180,22 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 Development is coordinated on the openssl-dev mailing list (see
 | 
					 Development is coordinated on the openssl-dev mailing list (see
 | 
				
			||||||
 http://www.openssl.org for information on subscribing). If you
 | 
					 http://www.openssl.org for information on subscribing). If you
 | 
				
			||||||
 would like to submit a patch, send it to openssl-dev@openssl.org with
 | 
					 would like to submit a patch, send it to openssl-bugs@openssl.org with
 | 
				
			||||||
 the string "[PATCH]" in the subject. Please be sure to include a
 | 
					 the string "[PATCH]" in the subject. Please be sure to include a
 | 
				
			||||||
 textual explanation of what your patch does.
 | 
					 textual explanation of what your patch does.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 If you are unsure as to whether a feature will be useful for the general
 | 
				
			||||||
 | 
					 OpenSSL community please discuss it on the openssl-dev mailing list first.
 | 
				
			||||||
 | 
					 Someone may be already working on the same thing or there may be a good
 | 
				
			||||||
 | 
					 reason as to why that feature isn't implemented.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Patches should be as up to date as possible, preferably relative to the
 | 
				
			||||||
 | 
					 current CVS or the last snapshot. They should follow the coding style of
 | 
				
			||||||
 | 
					 OpenSSL and compile without warnings. Some of the core team developer targets
 | 
				
			||||||
 | 
					 can be used for testing purposes, (debug-steve64, debug-geoff etc). OpenSSL
 | 
				
			||||||
 | 
					 compiles on many varied platforms: try to ensure you only use portable
 | 
				
			||||||
 | 
					 features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Note: For legal reasons, contributions from the US can be accepted only
 | 
					 Note: For legal reasons, contributions from the US can be accepted only
 | 
				
			||||||
 if a TSU notification and a copy of the patch are sent to crypt@bis.doc.gov
 | 
					 if a TSU notification and a copy of the patch are sent to crypt@bis.doc.gov
 | 
				
			||||||
 (formerly BXA) with a copy to the ENC Encryption Request Coordinator;
 | 
					 (formerly BXA) with a copy to the ENC Encryption Request Coordinator;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								README.FIPS
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								README.FIPS
									
									
									
									
									
								
							@@ -1,35 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
Brief instructions on using OpenSSL 0.9.8 FIPS test branch.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To avoid any confusion that this might generate a validate library just
 | 
					 | 
				
			||||||
supplying "fips" on the command line wont work. Additional options are
 | 
					 | 
				
			||||||
needed...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To build fipscanister and produce a usable distribution the configuration
 | 
					 | 
				
			||||||
option "fipscanisterbuild" is used to either the config or Configure scripts.
 | 
					 | 
				
			||||||
For example:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
./config fipscanisterbuild
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This builds static libraries in a way similar to the FIPS 1.1.1 distro.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To build the shared library fipscanister version use the configuration
 | 
					 | 
				
			||||||
options "fipsdso".
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Note that the fipscanister.o file is totally incompatible with the version
 | 
					 | 
				
			||||||
produced by the FIPS 1.1.1 distribution and cannot be made to work with
 | 
					 | 
				
			||||||
it.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Both options should also work under Windows and VC++. With this version the
 | 
					 | 
				
			||||||
use of MinGW is unnecessary and the normal VC++ build procedure can be
 | 
					 | 
				
			||||||
followed *except* the GNU linker "ld.exe" (for example from MinGW) must be
 | 
					 | 
				
			||||||
accessible somewhere on the PATH. For example:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
perl Configure VC-WIN32 fipsdso
 | 
					 | 
				
			||||||
ms\do_masm
 | 
					 | 
				
			||||||
nmake -f ms\ntdll.mak
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Note that any warnings from a Windows version of "tar" about being unable to
 | 
					 | 
				
			||||||
create symbolic links can be ignored.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										37
									
								
								STATUS
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								STATUS
									
									
									
									
									
								
							@@ -1,10 +1,41 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  OpenSSL STATUS                           Last modified at
 | 
					  OpenSSL STATUS                           Last modified at
 | 
				
			||||||
  ______________                           $Date: 2007/02/23 12:12:27 $
 | 
					  ______________                           $Date: 2012/05/10 14:36:07 $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DEVELOPMENT STATE
 | 
					  DEVELOPMENT STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    o  OpenSSL 0.9.9:  Under development...
 | 
					    o  OpenSSL 1.1.0:  Under development...
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.1:  Under development...
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0i: Released on April     19th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0h: Released on March     12th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0g: Released on January   18th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0f: Released on January    4th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0e: Released on September  6th, 2011
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0d: Released on February   8nd, 2011
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0c: Released on December   2nd, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0b: Released on November  16th, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0a: Released on June      1st,  2010
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.0:  Released on March     29th, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8y: Released on February   5th, 2013
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8x: Released on May       10th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8w: Released on April     23rd, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8v: Released on April     19th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8u: Released on March     12th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8t: Released on January   18th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8s: Released on January    4th, 2012
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8r: Released on February   8nd, 2011
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8q: Released on December   2nd, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8p: Released on November  16th, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8o: Released on June       1st, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8n: Released on March     24th, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8m: Released on February  25th, 2010
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8l: Released on November   5th, 2009
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8k: Released on March     25th, 2009
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8j: Released on January    7th, 2009
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8i: Released on September 15th, 2008
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8h: Released on May       28th, 2008
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8g: Released on October   19th, 2007
 | 
				
			||||||
 | 
					    o  OpenSSL 0.9.8f: Released on October   11th, 2007
 | 
				
			||||||
    o  OpenSSL 0.9.8e: Released on February  23rd, 2007
 | 
					    o  OpenSSL 0.9.8e: Released on February  23rd, 2007
 | 
				
			||||||
    o  OpenSSL 0.9.8d: Released on September 28th, 2006
 | 
					    o  OpenSSL 0.9.8d: Released on September 28th, 2006
 | 
				
			||||||
    o  OpenSSL 0.9.8c: Released on September  5th, 2006
 | 
					    o  OpenSSL 0.9.8c: Released on September  5th, 2006
 | 
				
			||||||
@@ -47,7 +78,7 @@
 | 
				
			|||||||
    o  OpenSSL 0.9.2b: Released on March     22th, 1999
 | 
					    o  OpenSSL 0.9.2b: Released on March     22th, 1999
 | 
				
			||||||
    o  OpenSSL 0.9.1c: Released on December  23th, 1998
 | 
					    o  OpenSSL 0.9.1c: Released on December  23th, 1998
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [See also http://www.openssl.org/support/rt2.html]
 | 
					  [See also http://www.openssl.org/support/rt.html]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE SHOWSTOPPERS
 | 
					  RELEASE SHOWSTOPPERS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,14 @@ $	    WRITE SYS$OUTPUT "Should be the directory where you want things installed.
 | 
				
			|||||||
$	    EXIT
 | 
					$	    EXIT
 | 
				
			||||||
$	ENDIF
 | 
					$	ENDIF
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
 | 
					$	IF (F$GETSYI("CPU").LT.128)
 | 
				
			||||||
 | 
					$	THEN
 | 
				
			||||||
 | 
					$	    ARCH := VAX
 | 
				
			||||||
 | 
					$	ELSE
 | 
				
			||||||
 | 
					$	    ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
 | 
				
			||||||
 | 
					$	    IF (ARCH .EQS. "") THEN ARCH = "UNK"
 | 
				
			||||||
 | 
					$	ENDIF
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
					$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
				
			||||||
$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
					$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
				
			||||||
$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
					$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
				
			||||||
@@ -19,13 +27,7 @@ $	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
				
			|||||||
$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
					$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
 | 
					$	DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
 | 
					$	DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE]
 | 
					 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
 | 
					$	IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
						   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
				
			||||||
@@ -39,7 +41,7 @@ $	IF F$SEARCH("WRK_SSLINCLUDE:vms_idhacks.h") .NES. "" THEN -
 | 
				
			|||||||
$
 | 
					$
 | 
				
			||||||
$	OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
 | 
					$	OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
 | 
				
			||||||
$	WRITE SYS$OUTPUT "%OPEN-I-CREATED,  ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created."
 | 
					$	WRITE SYS$OUTPUT "%OPEN-I-CREATED,  ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created."
 | 
				
			||||||
$	WRITE SF "$! Startup file for Openssl 0.9.2-RL 15-Mar-1999"
 | 
					$	WRITE SF "$! Startup file for Openssl"
 | 
				
			||||||
$	WRITE SF "$!"
 | 
					$	WRITE SF "$!"
 | 
				
			||||||
$	WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
 | 
					$	WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
 | 
				
			||||||
$	WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
 | 
					$	WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
 | 
				
			||||||
@@ -47,8 +49,13 @@ $	WRITE SF "$!"
 | 
				
			|||||||
$	WRITE SF "$! P1	a qualifier to DEFINE.  For example ""/SYSTEM"" to get the logical names"
 | 
					$	WRITE SF "$! P1	a qualifier to DEFINE.  For example ""/SYSTEM"" to get the logical names"
 | 
				
			||||||
$	WRITE SF "$!	defined in the system logical name table."
 | 
					$	WRITE SF "$!	defined in the system logical name table."
 | 
				
			||||||
$	WRITE SF "$!"
 | 
					$	WRITE SF "$!"
 | 
				
			||||||
$	WRITE SF "$	ARCH = ""VAX"""
 | 
					$	WRITE SF "$	IF (F$GETSYI(""CPU"").LT.128)"
 | 
				
			||||||
$	WRITE SF "$	IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA"""
 | 
					$	WRITE SF "$	THEN"
 | 
				
			||||||
 | 
					$	WRITE SF "$	    ARCH := VAX"
 | 
				
			||||||
 | 
					$	WRITE SF "$	ELSE"
 | 
				
			||||||
 | 
					$	WRITE SF "$	    ARCH = F$EDIT( F$GETSYI( ""ARCH_NAME""), ""UPCASE"")"
 | 
				
			||||||
 | 
					$	WRITE SF "$	    IF (ARCH .EQS. """") THEN ARCH = ""UNK"""
 | 
				
			||||||
 | 
					$	WRITE SF "$	ENDIF"
 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLROOT		",ROOT,".] /TRANS=CONC"
 | 
					$	WRITE SF "$	DEFINE/NOLOG'P1	SSLROOT		",ROOT,".] /TRANS=CONC"
 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLLIB		SSLROOT:['ARCH'_LIB]"
 | 
					$	WRITE SF "$	DEFINE/NOLOG'P1	SSLLIB		SSLROOT:['ARCH'_LIB]"
 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLINCLUDE	SSLROOT:[INCLUDE]"
 | 
					$	WRITE SF "$	DEFINE/NOLOG'P1	SSLINCLUDE	SSLROOT:[INCLUDE]"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,10 @@ $!
 | 
				
			|||||||
$! No command line parameters.  This should be run at the start of the source
 | 
					$! No command line parameters.  This should be run at the start of the source
 | 
				
			||||||
$! tree (the same directory where one finds INSTALL.VMS).
 | 
					$! tree (the same directory where one finds INSTALL.VMS).
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Input:	[.UTIL]LIBEAY.NUM,[.AXP.EXE.CRYPTO]LIBCRYPTO.OLB
 | 
					$! Input:	[.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB
 | 
				
			||||||
$!		[.UTIL]SSLEAY.NUM,[.AXP.EXE.SSL]LIBSSL.OLB
 | 
					$!		[.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]LIBSSL.OLB
 | 
				
			||||||
$! Output:	[.AXP.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
 | 
					$! Output:	[.xxx.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
 | 
				
			||||||
$!		[.AXP.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
 | 
					$!		[.xxx.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! So far, tests have only been made on VMS for Alpha.  VAX will come in time.
 | 
					$! So far, tests have only been made on VMS for Alpha.  VAX will come in time.
 | 
				
			||||||
$! ===========================================================================
 | 
					$! ===========================================================================
 | 
				
			||||||
@@ -19,31 +19,41 @@ $   write sys$error "ERROR: Couldn't find any library version info..."
 | 
				
			|||||||
$   exit
 | 
					$   exit
 | 
				
			||||||
$ endif
 | 
					$ endif
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$ if f$getsyi("CPU") .ge. 128
 | 
					$ if (f$getsyi("cpu").lt.128)
 | 
				
			||||||
$ then
 | 
					$ then
 | 
				
			||||||
 | 
					$     arch := VAX
 | 
				
			||||||
 | 
					$ else
 | 
				
			||||||
 | 
					$     arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
 | 
				
			||||||
 | 
					$     if (arch .eqs. "") then arch = "UNK"
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
 | 
					$ if arch .nes. "VAX"
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   arch_vax = 0
 | 
				
			||||||
$   libid  = "Crypto"
 | 
					$   libid  = "Crypto"
 | 
				
			||||||
$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
					$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
				
			||||||
$   libdir = "[.AXP.EXE.CRYPTO]"
 | 
					$   libdir = "[.''ARCH'.EXE.CRYPTO]"
 | 
				
			||||||
$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
					$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
					$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
				
			||||||
$   libmap = "''libdir'LIBCRYPTO.MAP"
 | 
					$   libmap = "''libdir'LIBCRYPTO.MAP"
 | 
				
			||||||
$   libgoal= "''libdir'LIBCRYPTO.EXE"
 | 
					$   libgoal= "''libdir'LIBCRYPTO.EXE"
 | 
				
			||||||
$   libref = ""
 | 
					$   libref = ""
 | 
				
			||||||
$   gosub create_axp_shr
 | 
					$   gosub create_nonvax_shr
 | 
				
			||||||
$   libid  = "SSL"
 | 
					$   libid  = "SSL"
 | 
				
			||||||
$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
					$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
				
			||||||
$   libdir = "[.AXP.EXE.SSL]"
 | 
					$   libdir = "[.''ARCH'.EXE.SSL]"
 | 
				
			||||||
$   libolb = "''libdir'LIBSSL.OLB"
 | 
					$   libolb = "''libdir'LIBSSL.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBSSL.OPT"
 | 
					$   libopt = "''libdir'LIBSSL.OPT"
 | 
				
			||||||
$   libmap = "''libdir'LIBSSL.MAP"
 | 
					$   libmap = "''libdir'LIBSSL.MAP"
 | 
				
			||||||
$   libgoal= "''libdir'LIBSSL.EXE"
 | 
					$   libgoal= "''libdir'LIBSSL.EXE"
 | 
				
			||||||
$   libref = "[.AXP.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
					$   libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
				
			||||||
$   gosub create_axp_shr
 | 
					$   gosub create_nonvax_shr
 | 
				
			||||||
$ else
 | 
					$ else
 | 
				
			||||||
 | 
					$   arch_vax = 1
 | 
				
			||||||
$   libtit = "CRYPTO_TRANSFER_VECTOR"
 | 
					$   libtit = "CRYPTO_TRANSFER_VECTOR"
 | 
				
			||||||
$   libid  = "Crypto"
 | 
					$   libid  = "Crypto"
 | 
				
			||||||
$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
					$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
				
			||||||
$   libdir = "[.VAX.EXE.CRYPTO]"
 | 
					$   libdir = "[.''ARCH'.EXE.CRYPTO]"
 | 
				
			||||||
$   libmar = "''libdir'LIBCRYPTO.MAR"
 | 
					$   libmar = "''libdir'LIBCRYPTO.MAR"
 | 
				
			||||||
$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
					$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
					$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
				
			||||||
@@ -56,22 +66,22 @@ $   gosub create_vax_shr
 | 
				
			|||||||
$   libtit = "SSL_TRANSFER_VECTOR"
 | 
					$   libtit = "SSL_TRANSFER_VECTOR"
 | 
				
			||||||
$   libid  = "SSL"
 | 
					$   libid  = "SSL"
 | 
				
			||||||
$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
					$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
				
			||||||
$   libdir = "[.VAX.EXE.SSL]"
 | 
					$   libdir = "[.''ARCH'.EXE.SSL]"
 | 
				
			||||||
$   libmar = "''libdir'LIBSSL.MAR"
 | 
					$   libmar = "''libdir'LIBSSL.MAR"
 | 
				
			||||||
$   libolb = "''libdir'LIBSSL.OLB"
 | 
					$   libolb = "''libdir'LIBSSL.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBSSL.OPT"
 | 
					$   libopt = "''libdir'LIBSSL.OPT"
 | 
				
			||||||
$   libobj = "''libdir'LIBSSL.OBJ"
 | 
					$   libobj = "''libdir'LIBSSL.OBJ"
 | 
				
			||||||
$   libmap = "''libdir'LIBSSL.MAP"
 | 
					$   libmap = "''libdir'LIBSSL.MAP"
 | 
				
			||||||
$   libgoal= "''libdir'LIBSSL.EXE"
 | 
					$   libgoal= "''libdir'LIBSSL.EXE"
 | 
				
			||||||
$   libref = "[.VAX.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
					$   libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
				
			||||||
$   libvec = "LIBSSL"
 | 
					$   libvec = "LIBSSL"
 | 
				
			||||||
$   gosub create_vax_shr
 | 
					$   gosub create_vax_shr
 | 
				
			||||||
$ endif
 | 
					$ endif
 | 
				
			||||||
$ exit
 | 
					$ exit
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! ----- Soubroutines to actually build the shareable libraries
 | 
					$! ----- Soubroutines to build the shareable libraries
 | 
				
			||||||
$! The way things work, there's a main shareable library creator for each
 | 
					$! For each supported architecture, there's a main shareable library
 | 
				
			||||||
$! supported architecture, which is called from the main code above.
 | 
					$! creator, which is called from the main code above.
 | 
				
			||||||
$! The creator will define a number of variables to tell the next levels of
 | 
					$! The creator will define a number of variables to tell the next levels of
 | 
				
			||||||
$! subroutines what routines to use to write to the option files, call the
 | 
					$! subroutines what routines to use to write to the option files, call the
 | 
				
			||||||
$! main processor, read_func_num, and when that is done, it will write version
 | 
					$! main processor, read_func_num, and when that is done, it will write version
 | 
				
			||||||
@@ -97,10 +107,10 @@ $! read_func_num depends on the following variables from the creator:
 | 
				
			|||||||
$! libwriter	The name of the writer routine to call for each .num file line
 | 
					$! libwriter	The name of the writer routine to call for each .num file line
 | 
				
			||||||
$! -----
 | 
					$! -----
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! ----- Subroutines for AXP
 | 
					$! ----- Subroutines for non-VAX
 | 
				
			||||||
$! -----
 | 
					$! -----
 | 
				
			||||||
$! The creator routine
 | 
					$! The creator routine
 | 
				
			||||||
$ create_axp_shr:
 | 
					$ create_nonvax_shr:
 | 
				
			||||||
$   open/write opt 'libopt'
 | 
					$   open/write opt 'libopt'
 | 
				
			||||||
$   write opt "identification=""",libid," ",libverstr,""""
 | 
					$   write opt "identification=""",libid," ",libverstr,""""
 | 
				
			||||||
$   write opt libolb,"/lib"
 | 
					$   write opt libolb,"/lib"
 | 
				
			||||||
@@ -108,7 +118,7 @@ $   if libref .nes. "" then write opt libref,"/SHARE"
 | 
				
			|||||||
$   write opt "SYMBOL_VECTOR=(-"
 | 
					$   write opt "SYMBOL_VECTOR=(-"
 | 
				
			||||||
$   libfirstentry := true
 | 
					$   libfirstentry := true
 | 
				
			||||||
$   libwrch   := opt
 | 
					$   libwrch   := opt
 | 
				
			||||||
$   libwriter := write_axp_transfer_entry
 | 
					$   libwriter := write_nonvax_transfer_entry
 | 
				
			||||||
$   textcount = 0
 | 
					$   textcount = 0
 | 
				
			||||||
$   gosub read_func_num
 | 
					$   gosub read_func_num
 | 
				
			||||||
$   write opt ")"
 | 
					$   write opt ")"
 | 
				
			||||||
@@ -118,7 +128,7 @@ $   link/map='libmap'/full/share='libgoal' 'libopt'/option
 | 
				
			|||||||
$   return
 | 
					$   return
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! The record writer routine
 | 
					$! The record writer routine
 | 
				
			||||||
$ write_axp_transfer_entry:
 | 
					$ write_nonvax_transfer_entry:
 | 
				
			||||||
$   if libentry .eqs. ".dummy" then return
 | 
					$   if libentry .eqs. ".dummy" then return
 | 
				
			||||||
$   if info_kind .eqs. "VARIABLE"
 | 
					$   if info_kind .eqs. "VARIABLE"
 | 
				
			||||||
$   then
 | 
					$   then
 | 
				
			||||||
@@ -144,7 +154,7 @@ $   libfirstentry := false
 | 
				
			|||||||
$   textcount = textcount + textcount_this
 | 
					$   textcount = textcount + textcount_this
 | 
				
			||||||
$   return
 | 
					$   return
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! ----- Subroutines for AXP
 | 
					$! ----- Subroutines for VAX
 | 
				
			||||||
$! -----
 | 
					$! -----
 | 
				
			||||||
$! The creator routine
 | 
					$! The creator routine
 | 
				
			||||||
$ create_vax_shr:
 | 
					$ create_vax_shr:
 | 
				
			||||||
@@ -264,8 +274,15 @@ $             truesum = truesum + 1
 | 
				
			|||||||
$           if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then -
 | 
					$           if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then -
 | 
				
			||||||
$             falsesum = falsesum + 1
 | 
					$             falsesum = falsesum + 1
 | 
				
			||||||
$         endif
 | 
					$         endif
 | 
				
			||||||
$         if plat_entry .eqs. "VMS" then truesum = truesum + 1
 | 
					$!
 | 
				
			||||||
$         if plat_entry .eqs. "!VMS" then falsesum = falsesum + 1
 | 
					$         if ((plat_entry .eqs. "VMS") .or. -
 | 
				
			||||||
 | 
					            (arch_vax .and. (plat_entry .eqs. "VMSVAX"))) then -
 | 
				
			||||||
 | 
					            truesum = truesum + 1
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$         if ((plat_entry .eqs. "!VMS") .or. -
 | 
				
			||||||
 | 
					            (arch_vax .and. (plat_entry .eqs. "!VMSVAX"))) then -
 | 
				
			||||||
 | 
					            falsesum = falsesum + 1
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$	  goto loop1
 | 
					$	  goto loop1
 | 
				
			||||||
$       endif
 | 
					$       endif
 | 
				
			||||||
$     endloop1:
 | 
					$     endloop1:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,31 +8,39 @@ $!
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$! Slightly modified by Richard Levitte <richard@levitte.org>
 | 
					$! Slightly modified by Richard Levitte <richard@levitte.org>
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Always define OPENSSL.  Others are optional (non-null P1).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$ OPENSSL  :== $SSLEXE:OPENSSL
 | 
					$ OPENSSL  :== $SSLEXE:OPENSSL
 | 
				
			||||||
$ VERIFY   :== $SSLEXE:OPENSSL VERIFY
 | 
					$
 | 
				
			||||||
$ ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS
 | 
					$ IF (P1 .NES. "")
 | 
				
			||||||
$ REQ      :== $SSLEXE:OPENSSL REQ
 | 
					$ THEN
 | 
				
			||||||
$ DGST     :== $SSLEXE:OPENSSL DGST
 | 
					$     VERIFY   :== $SSLEXE:OPENSSL VERIFY
 | 
				
			||||||
$ DH       :== $SSLEXE:OPENSSL DH
 | 
					$     ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS
 | 
				
			||||||
$ ENC      :== $SSLEXE:OPENSSL ENC
 | 
					$! REQ could conflict with REQUEST.
 | 
				
			||||||
$ GENDH    :== $SSLEXE:OPENSSL GENDH
 | 
					$     OREQ     :== $SSLEXE:OPENSSL REQ
 | 
				
			||||||
$ ERRSTR   :== $SSLEXE:OPENSSL ERRSTR
 | 
					$     DGST     :== $SSLEXE:OPENSSL DGST
 | 
				
			||||||
$ CA       :== $SSLEXE:OPENSSL CA
 | 
					$     DH       :== $SSLEXE:OPENSSL DH
 | 
				
			||||||
$ CRL      :== $SSLEXE:OPENSSL CRL
 | 
					$     ENC      :== $SSLEXE:OPENSSL ENC
 | 
				
			||||||
$ RSA      :== $SSLEXE:OPENSSL RSA
 | 
					$     GENDH    :== $SSLEXE:OPENSSL GENDH
 | 
				
			||||||
$ DSA      :== $SSLEXE:OPENSSL DSA
 | 
					$     ERRSTR   :== $SSLEXE:OPENSSL ERRSTR
 | 
				
			||||||
$ DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM
 | 
					$     CA       :== $SSLEXE:OPENSSL CA
 | 
				
			||||||
$ X509     :== $SSLEXE:OPENSSL X509
 | 
					$     CRL      :== $SSLEXE:OPENSSL CRL
 | 
				
			||||||
$ GENRSA   :== $SSLEXE:OPENSSL GENRSA
 | 
					$     RSA      :== $SSLEXE:OPENSSL RSA
 | 
				
			||||||
$ GENDSA   :== $SSLEXE:OPENSSL GENDSA
 | 
					$     DSA      :== $SSLEXE:OPENSSL DSA
 | 
				
			||||||
$ S_SERVER :== $SSLEXE:OPENSSL S_SERVER
 | 
					$     DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM
 | 
				
			||||||
$ S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT
 | 
					$     X509     :== $SSLEXE:OPENSSL X509
 | 
				
			||||||
$ SPEED    :== $SSLEXE:OPENSSL SPEED
 | 
					$     GENRSA   :== $SSLEXE:OPENSSL GENRSA
 | 
				
			||||||
$ S_TIME   :== $SSLEXE:OPENSSL S_TIME
 | 
					$     GENDSA   :== $SSLEXE:OPENSSL GENDSA
 | 
				
			||||||
$ VERSION  :== $SSLEXE:OPENSSL VERSION
 | 
					$     S_SERVER :== $SSLEXE:OPENSSL S_SERVER
 | 
				
			||||||
$ PKCS7    :== $SSLEXE:OPENSSL PKCS7
 | 
					$     S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT
 | 
				
			||||||
$ CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7
 | 
					$     SPEED    :== $SSLEXE:OPENSSL SPEED
 | 
				
			||||||
$ SESS_ID  :== $SSLEXE:OPENSSL SESS_ID
 | 
					$     S_TIME   :== $SSLEXE:OPENSSL S_TIME
 | 
				
			||||||
$ CIPHERS  :== $SSLEXE:OPENSSL CIPHERS
 | 
					$     VERSION  :== $SSLEXE:OPENSSL VERSION
 | 
				
			||||||
$ NSEQ     :== $SSLEXE:OPENSSL NSEQ
 | 
					$     PKCS7    :== $SSLEXE:OPENSSL PKCS7
 | 
				
			||||||
$ PKCS12   :== $SSLEXE:OPENSSL PKCS12
 | 
					$     CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7
 | 
				
			||||||
 | 
					$     SESS_ID  :== $SSLEXE:OPENSSL SESS_ID
 | 
				
			||||||
 | 
					$     CIPHERS  :== $SSLEXE:OPENSSL CIPHERS
 | 
				
			||||||
 | 
					$     NSEQ     :== $SSLEXE:OPENSSL NSEQ
 | 
				
			||||||
 | 
					$     PKCS12   :== $SSLEXE:OPENSSL PKCS12
 | 
				
			||||||
 | 
					$ ENDIF
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -114,8 +114,8 @@ $!
 | 
				
			|||||||
$   IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
 | 
					$   IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
 | 
				
			||||||
$   THEN
 | 
					$   THEN
 | 
				
			||||||
$     READ '__INPUT' FILE -
 | 
					$     READ '__INPUT' FILE -
 | 
				
			||||||
	   /PROMT="CA certificate filename (or enter to create)"
 | 
						   /PROMPT="CA certificate filename (or enter to create): "
 | 
				
			||||||
$     IF F$SEARCH(FILE) .NES. ""
 | 
					$     IF (FILE .NES. "") .AND. (F$SEARCH(FILE) .NES. "")
 | 
				
			||||||
$     THEN
 | 
					$     THEN
 | 
				
			||||||
$       COPY 'FILE' 'CATOP'.private'CAKEY'
 | 
					$       COPY 'FILE' 'CATOP'.private'CAKEY'
 | 
				
			||||||
$	RET=$STATUS
 | 
					$	RET=$STATUS
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										121
									
								
								apps/CA.sh
									
									
									
									
									
								
							
							
						
						
									
										121
									
								
								apps/CA.sh
									
									
									
									
									
								
							@@ -5,10 +5,10 @@
 | 
				
			|||||||
#      things easier between now and when Eric is convinced to fix it :-)
 | 
					#      things easier between now and when Eric is convinced to fix it :-)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# CA -newca ... will setup the right stuff
 | 
					# CA -newca ... will setup the right stuff
 | 
				
			||||||
# CA -newreq ... will generate a certificate request 
 | 
					# CA -newreq ... will generate a certificate request
 | 
				
			||||||
# CA -sign ... will sign the generated request and output 
 | 
					# CA -sign ... will sign the generated request and output
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# At the end of that grab newreq.pem and newcert.pem (one has the key 
 | 
					# At the end of that grab newreq.pem and newcert.pem (one has the key
 | 
				
			||||||
# and the other the certificate) and cat them together and that is what
 | 
					# and the other the certificate) and cat them together and that is what
 | 
				
			||||||
# you want/need ... I'll make even this a little cleaner later.
 | 
					# you want/need ... I'll make even this a little cleaner later.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -16,8 +16,8 @@
 | 
				
			|||||||
# 12-Jan-96 tjh    Added more things ... including CA -signcert which
 | 
					# 12-Jan-96 tjh    Added more things ... including CA -signcert which
 | 
				
			||||||
#                  converts a certificate to a request and then signs it.
 | 
					#                  converts a certificate to a request and then signs it.
 | 
				
			||||||
# 10-Jan-96 eay    Fixed a few more bugs and added the SSLEAY_CONFIG
 | 
					# 10-Jan-96 eay    Fixed a few more bugs and added the SSLEAY_CONFIG
 | 
				
			||||||
#		   environment variable so this can be driven from
 | 
					#                  environment variable so this can be driven from
 | 
				
			||||||
#		   a script.
 | 
					#                  a script.
 | 
				
			||||||
# 25-Jul-96 eay    Cleaned up filenames some more.
 | 
					# 25-Jul-96 eay    Cleaned up filenames some more.
 | 
				
			||||||
# 11-Jun-96 eay    Fixed a few filename missmatches.
 | 
					# 11-Jun-96 eay    Fixed a few filename missmatches.
 | 
				
			||||||
# 03-May-96 eay    Modified to use 'ssleay cmd' instead of 'cmd'.
 | 
					# 03-May-96 eay    Modified to use 'ssleay cmd' instead of 'cmd'.
 | 
				
			||||||
@@ -29,52 +29,87 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# default openssl.cnf file has setup as per the following
 | 
					# default openssl.cnf file has setup as per the following
 | 
				
			||||||
# demoCA ... where everything is stored
 | 
					# demoCA ... where everything is stored
 | 
				
			||||||
 | 
					cp_pem() {
 | 
				
			||||||
 | 
					    infile=$1
 | 
				
			||||||
 | 
					    outfile=$2
 | 
				
			||||||
 | 
					    bound=$3
 | 
				
			||||||
 | 
					    flag=0
 | 
				
			||||||
 | 
					    exec <$infile;
 | 
				
			||||||
 | 
					    while read line; do
 | 
				
			||||||
 | 
						if [ $flag -eq 1 ]; then
 | 
				
			||||||
 | 
							echo $line|grep "^-----END.*$bound"  2>/dev/null 1>/dev/null
 | 
				
			||||||
 | 
							if [ $? -eq 0 ] ; then
 | 
				
			||||||
 | 
								echo $line >>$outfile
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								echo $line >>$outfile
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						echo $line|grep "^-----BEGIN.*$bound"  2>/dev/null 1>/dev/null
 | 
				
			||||||
 | 
						if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
							echo $line >$outfile
 | 
				
			||||||
 | 
							flag=1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
					 echo "usage: $0 -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify" >&2
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -z "$OPENSSL" ]; then OPENSSL=openssl; fi
 | 
					if [ -z "$OPENSSL" ]; then OPENSSL=openssl; fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DAYS="-days 365"	# 1 year
 | 
					if [ -z "$DAYS" ] ; then DAYS="-days 365" ; fi	# 1 year
 | 
				
			||||||
CADAYS="-days 1095"	# 3 years
 | 
					CADAYS="-days 1095"	# 3 years
 | 
				
			||||||
REQ="$OPENSSL req $SSLEAY_CONFIG"
 | 
					REQ="$OPENSSL req $SSLEAY_CONFIG"
 | 
				
			||||||
CA="$OPENSSL ca $SSLEAY_CONFIG"
 | 
					CA="$OPENSSL ca $SSLEAY_CONFIG"
 | 
				
			||||||
VERIFY="$OPENSSL verify"
 | 
					VERIFY="$OPENSSL verify"
 | 
				
			||||||
X509="$OPENSSL x509"
 | 
					X509="$OPENSSL x509"
 | 
				
			||||||
 | 
					PKCS12="openssl pkcs12"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CATOP=./demoCA
 | 
					if [ -z "$CATOP" ] ; then CATOP=./demoCA ; fi
 | 
				
			||||||
CAKEY=./cakey.pem
 | 
					CAKEY=./cakey.pem
 | 
				
			||||||
CAREQ=./careq.pem
 | 
					CAREQ=./careq.pem
 | 
				
			||||||
CACERT=./cacert.pem
 | 
					CACERT=./cacert.pem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for i
 | 
					RET=0
 | 
				
			||||||
do
 | 
					
 | 
				
			||||||
case $i in
 | 
					while [ "$1" != "" ] ; do
 | 
				
			||||||
 | 
					case $1 in
 | 
				
			||||||
-\?|-h|-help)
 | 
					-\?|-h|-help)
 | 
				
			||||||
    echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" >&2
 | 
					    usage
 | 
				
			||||||
    exit 0
 | 
					    exit 0
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-newcert) 
 | 
					-newcert)
 | 
				
			||||||
    # create a certificate
 | 
					    # create a certificate
 | 
				
			||||||
    $REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS
 | 
					    $REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS
 | 
				
			||||||
    RET=$?
 | 
					    RET=$?
 | 
				
			||||||
    echo "Certificate is in newcert.pem, private key is in newkey.pem"
 | 
					    echo "Certificate is in newcert.pem, private key is in newkey.pem"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-newreq) 
 | 
					-newreq)
 | 
				
			||||||
    # create a certificate request
 | 
					    # create a certificate request
 | 
				
			||||||
    $REQ -new -keyout newkey.pem -out newreq.pem $DAYS
 | 
					    $REQ -new -keyout newkey.pem -out newreq.pem $DAYS
 | 
				
			||||||
    RET=$?
 | 
					    RET=$?
 | 
				
			||||||
    echo "Request is in newreq.pem, private key is in newkey.pem"
 | 
					    echo "Request is in newreq.pem, private key is in newkey.pem"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-newca)     
 | 
					-newreq-nodes) 
 | 
				
			||||||
 | 
					    # create a certificate request
 | 
				
			||||||
 | 
					    $REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS
 | 
				
			||||||
 | 
					    RET=$?
 | 
				
			||||||
 | 
					    echo "Request (and private key) is in newreq.pem"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					-newca)
 | 
				
			||||||
    # if explicitly asked for or it doesn't exist then setup the directory
 | 
					    # if explicitly asked for or it doesn't exist then setup the directory
 | 
				
			||||||
    # structure that Eric likes to manage things 
 | 
					    # structure that Eric likes to manage things
 | 
				
			||||||
    NEW="1"
 | 
					    NEW="1"
 | 
				
			||||||
    if [ "$NEW" -o ! -f ${CATOP}/serial ]; then
 | 
					    if [ "$NEW" -o ! -f ${CATOP}/serial ]; then
 | 
				
			||||||
	# create the directory hierarchy
 | 
						# create the directory hierarchy
 | 
				
			||||||
	mkdir ${CATOP} 
 | 
						mkdir -p ${CATOP}
 | 
				
			||||||
	mkdir ${CATOP}/certs 
 | 
						mkdir -p ${CATOP}/certs
 | 
				
			||||||
	mkdir ${CATOP}/crl 
 | 
						mkdir -p ${CATOP}/crl
 | 
				
			||||||
	mkdir ${CATOP}/newcerts
 | 
						mkdir -p ${CATOP}/newcerts
 | 
				
			||||||
	mkdir ${CATOP}/private
 | 
						mkdir -p ${CATOP}/private
 | 
				
			||||||
	echo "00" > ${CATOP}/serial
 | 
					 | 
				
			||||||
	touch ${CATOP}/index.txt
 | 
						touch ${CATOP}/index.txt
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    if [ ! -f ${CATOP}/private/$CAKEY ]; then
 | 
					    if [ ! -f ${CATOP}/private/$CAKEY ]; then
 | 
				
			||||||
@@ -83,37 +118,60 @@ case $i in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	# ask user for existing CA certificate
 | 
						# ask user for existing CA certificate
 | 
				
			||||||
	if [ "$FILE" ]; then
 | 
						if [ "$FILE" ]; then
 | 
				
			||||||
	    cp $FILE ${CATOP}/private/$CAKEY
 | 
						    cp_pem $FILE ${CATOP}/private/$CAKEY PRIVATE
 | 
				
			||||||
 | 
						    cp_pem $FILE ${CATOP}/$CACERT CERTIFICATE
 | 
				
			||||||
	    RET=$?
 | 
						    RET=$?
 | 
				
			||||||
 | 
						    if [ ! -f "${CATOP}/serial" ]; then
 | 
				
			||||||
 | 
							$X509 -in ${CATOP}/$CACERT -noout -next_serial \
 | 
				
			||||||
 | 
							      -out ${CATOP}/serial
 | 
				
			||||||
 | 
						    fi
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	    echo "Making CA certificate ..."
 | 
						    echo "Making CA certificate ..."
 | 
				
			||||||
	    $REQ -new -keyout ${CATOP}/private/$CAKEY \
 | 
						    $REQ -new -keyout ${CATOP}/private/$CAKEY \
 | 
				
			||||||
			   -out ${CATOP}/$CAREQ
 | 
								   -out ${CATOP}/$CAREQ
 | 
				
			||||||
	    $CA -out ${CATOP}/$CACERT $CADAYS -batch \
 | 
						    $CA -create_serial -out ${CATOP}/$CACERT $CADAYS -batch \
 | 
				
			||||||
			   -keyfile ${CATOP}/private/$CAKEY -selfsign \
 | 
								   -keyfile ${CATOP}/private/$CAKEY -selfsign \
 | 
				
			||||||
			   -infiles ${CATOP}/$CAREQ 
 | 
								   -extensions v3_ca \
 | 
				
			||||||
 | 
								   -infiles ${CATOP}/$CAREQ
 | 
				
			||||||
	    RET=$?
 | 
						    RET=$?
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-xsign)
 | 
					-xsign)
 | 
				
			||||||
    $CA -policy policy_anything -infiles newreq.pem 
 | 
					    $CA -policy policy_anything -infiles newreq.pem
 | 
				
			||||||
    RET=$?
 | 
					    RET=$?
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-sign|-signreq) 
 | 
					-pkcs12)
 | 
				
			||||||
 | 
					    if [ -z "$2" ] ; then
 | 
				
			||||||
 | 
						CNAME="My Certificate"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
						CNAME="$2"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    $PKCS12 -in newcert.pem -inkey newreq.pem -certfile ${CATOP}/$CACERT \
 | 
				
			||||||
 | 
						    -out newcert.p12 -export -name "$CNAME"
 | 
				
			||||||
 | 
					    RET=$?
 | 
				
			||||||
 | 
					    exit $RET
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					-sign|-signreq)
 | 
				
			||||||
    $CA -policy policy_anything -out newcert.pem -infiles newreq.pem
 | 
					    $CA -policy policy_anything -out newcert.pem -infiles newreq.pem
 | 
				
			||||||
    RET=$?
 | 
					    RET=$?
 | 
				
			||||||
    cat newcert.pem
 | 
					    cat newcert.pem
 | 
				
			||||||
    echo "Signed certificate is in newcert.pem"
 | 
					    echo "Signed certificate is in newcert.pem"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-signcert) 
 | 
					-signCA)
 | 
				
			||||||
 | 
					    $CA -policy policy_anything -out newcert.pem -extensions v3_ca -infiles newreq.pem
 | 
				
			||||||
 | 
					    RET=$?
 | 
				
			||||||
 | 
					    echo "Signed CA certificate is in newcert.pem"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					-signcert)
 | 
				
			||||||
    echo "Cert passphrase will be requested twice - bug?"
 | 
					    echo "Cert passphrase will be requested twice - bug?"
 | 
				
			||||||
    $X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
 | 
					    $X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
 | 
				
			||||||
    $CA -policy policy_anything -out newcert.pem -infiles tmp.pem
 | 
					    $CA -policy policy_anything -out newcert.pem -infiles tmp.pem
 | 
				
			||||||
 | 
					    RET=$?
 | 
				
			||||||
    cat newcert.pem
 | 
					    cat newcert.pem
 | 
				
			||||||
    echo "Signed certificate is in newcert.pem"
 | 
					    echo "Signed certificate is in newcert.pem"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
-verify) 
 | 
					-verify)
 | 
				
			||||||
    shift
 | 
					    shift
 | 
				
			||||||
    if [ -z "$1" ]; then
 | 
					    if [ -z "$1" ]; then
 | 
				
			||||||
	    $VERIFY -CAfile $CATOP/$CACERT newcert.pem
 | 
						    $VERIFY -CAfile $CATOP/$CACERT newcert.pem
 | 
				
			||||||
@@ -127,13 +185,14 @@ case $i in
 | 
				
			|||||||
	    fi
 | 
						    fi
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    exit 0
 | 
					    exit $RET
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
*)
 | 
					*)
 | 
				
			||||||
    echo "Unknown arg $i";
 | 
					    echo "Unknown arg $i" >&2
 | 
				
			||||||
 | 
					    usage
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					shift
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
exit $RET
 | 
					exit $RET
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										682
									
								
								apps/Makefile
									
									
									
									
									
								
							
							
						
						
									
										682
									
								
								apps/Makefile
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										260
									
								
								apps/apps.c
									
									
									
									
									
								
							
							
						
						
									
										260
									
								
								apps/apps.c
									
									
									
									
									
								
							@@ -115,6 +115,7 @@
 | 
				
			|||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <sys/stat.h>
 | 
					#include <sys/stat.h>
 | 
				
			||||||
#include <ctype.h>
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					#include <assert.h>
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
#include <openssl/x509.h>
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
#include <openssl/x509v3.h>
 | 
					#include <openssl/x509v3.h>
 | 
				
			||||||
@@ -129,6 +130,9 @@
 | 
				
			|||||||
#include <openssl/rsa.h>
 | 
					#include <openssl/rsa.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include <openssl/bn.h>
 | 
					#include <openssl/bn.h>
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
					#include <openssl/jpake.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NON_MAIN
 | 
					#define NON_MAIN
 | 
				
			||||||
#include "apps.h"
 | 
					#include "apps.h"
 | 
				
			||||||
@@ -347,13 +351,12 @@ void program_name(char *in, char *out, int size)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int chopup_args(ARGS *arg, char *buf, int *argc, char **argv[])
 | 
					int chopup_args(ARGS *arg, char *buf, int *argc, char **argv[])
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int num,len,i;
 | 
						int num,i;
 | 
				
			||||||
	char *p;
 | 
						char *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*argc=0;
 | 
						*argc=0;
 | 
				
			||||||
	*argv=NULL;
 | 
						*argv=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	len=strlen(buf);
 | 
					 | 
				
			||||||
	i=0;
 | 
						i=0;
 | 
				
			||||||
	if (arg->count == 0)
 | 
						if (arg->count == 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -862,10 +865,17 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
	if (format == FORMAT_ENGINE)
 | 
						if (format == FORMAT_ENGINE)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (!e)
 | 
							if (!e)
 | 
				
			||||||
			BIO_printf(bio_err,"no engine specified\n");
 | 
								BIO_printf(err,"no engine specified\n");
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
			pkey = ENGINE_load_private_key(e, file,
 | 
								pkey = ENGINE_load_private_key(e, file,
 | 
				
			||||||
				ui_method, &cb_data);
 | 
									ui_method, &cb_data);
 | 
				
			||||||
 | 
								if (!pkey) 
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(err,"cannot load %s from engine\n",key_descrip);
 | 
				
			||||||
 | 
									ERR_print_errors(err);
 | 
				
			||||||
 | 
									}	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -915,8 +925,11 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 end:
 | 
					 end:
 | 
				
			||||||
	if (key != NULL) BIO_free(key);
 | 
						if (key != NULL) BIO_free(key);
 | 
				
			||||||
	if (pkey == NULL)
 | 
						if (pkey == NULL) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
		BIO_printf(err,"unable to load %s\n", key_descrip);
 | 
							BIO_printf(err,"unable to load %s\n", key_descrip);
 | 
				
			||||||
 | 
							ERR_print_errors(err);
 | 
				
			||||||
 | 
							}	
 | 
				
			||||||
	return(pkey);
 | 
						return(pkey);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2010,7 +2023,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;
 | 
				
			||||||
@@ -2039,7 +2052,7 @@ X509_NAME *parse_name(char *subject, long chtype, int multirdn)
 | 
				
			|||||||
	X509_NAME *n = NULL;
 | 
						X509_NAME *n = NULL;
 | 
				
			||||||
	int nid;
 | 
						int nid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!buf || !ne_types || !ne_values)
 | 
						if (!buf || !ne_types || !ne_values || !mval)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err, "malloc error\n");
 | 
							BIO_printf(bio_err, "malloc error\n");
 | 
				
			||||||
		goto error;
 | 
							goto error;
 | 
				
			||||||
@@ -2143,6 +2156,7 @@ X509_NAME *parse_name(char *subject, long chtype, int multirdn)
 | 
				
			|||||||
	OPENSSL_free(ne_values);
 | 
						OPENSSL_free(ne_values);
 | 
				
			||||||
	OPENSSL_free(ne_types);
 | 
						OPENSSL_free(ne_types);
 | 
				
			||||||
	OPENSSL_free(buf);
 | 
						OPENSSL_free(buf);
 | 
				
			||||||
 | 
						OPENSSL_free(mval);
 | 
				
			||||||
	return n;
 | 
						return n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
error:
 | 
					error:
 | 
				
			||||||
@@ -2151,6 +2165,8 @@ error:
 | 
				
			|||||||
		OPENSSL_free(ne_values);
 | 
							OPENSSL_free(ne_values);
 | 
				
			||||||
	if (ne_types)
 | 
						if (ne_types)
 | 
				
			||||||
		OPENSSL_free(ne_types);
 | 
							OPENSSL_free(ne_types);
 | 
				
			||||||
 | 
						if (mval)
 | 
				
			||||||
 | 
							OPENSSL_free(mval);
 | 
				
			||||||
	if (buf)
 | 
						if (buf)
 | 
				
			||||||
		OPENSSL_free(buf);
 | 
							OPENSSL_free(buf);
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
@@ -2257,6 +2273,8 @@ int args_verify(char ***pargs, int *pargc,
 | 
				
			|||||||
		flags |= X509_V_FLAG_X509_STRICT;
 | 
							flags |= X509_V_FLAG_X509_STRICT;
 | 
				
			||||||
	else if (!strcmp(arg, "-policy_print"))
 | 
						else if (!strcmp(arg, "-policy_print"))
 | 
				
			||||||
		flags |= X509_V_FLAG_NOTIFY_POLICY;
 | 
							flags |= X509_V_FLAG_NOTIFY_POLICY;
 | 
				
			||||||
 | 
						else if (!strcmp(arg, "-check_ss_sig"))
 | 
				
			||||||
 | 
							flags |= X509_V_FLAG_CHECK_SS_SIGNATURE;
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2333,3 +2351,233 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx)
 | 
				
			|||||||
	if (free_out)
 | 
						if (free_out)
 | 
				
			||||||
		BIO_free(out);
 | 
							BIO_free(out);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static JPAKE_CTX *jpake_init(const char *us, const char *them,
 | 
				
			||||||
 | 
												 const char *secret)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BIGNUM *p = NULL;
 | 
				
			||||||
 | 
						BIGNUM *g = NULL;
 | 
				
			||||||
 | 
						BIGNUM *q = NULL;
 | 
				
			||||||
 | 
						BIGNUM *bnsecret = BN_new();
 | 
				
			||||||
 | 
						JPAKE_CTX *ctx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Use a safe prime for p (that we found earlier) */
 | 
				
			||||||
 | 
						BN_hex2bn(&p, "F9E5B365665EA7A05A9C534502780FEE6F1AB5BD4F49947FD036DBD7E905269AF46EF28B0FC07487EE4F5D20FB3C0AF8E700F3A2FA3414970CBED44FEDFF80CE78D800F184BB82435D137AADA2C6C16523247930A63B85661D1FC817A51ACD96168E95898A1F83A79FFB529368AA7833ABD1B0C3AEDDB14D2E1A2F71D99F763F");
 | 
				
			||||||
 | 
						g = BN_new();
 | 
				
			||||||
 | 
						BN_set_word(g, 2);
 | 
				
			||||||
 | 
						q = BN_new();
 | 
				
			||||||
 | 
						BN_rshift1(q, p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BN_bin2bn((const unsigned char *)secret, strlen(secret), bnsecret);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx = JPAKE_CTX_new(us, them, p, g, q, bnsecret);
 | 
				
			||||||
 | 
						BN_free(bnsecret);
 | 
				
			||||||
 | 
						BN_free(q);
 | 
				
			||||||
 | 
						BN_free(g);
 | 
				
			||||||
 | 
						BN_free(p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ctx;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_send_part(BIO *conn, const JPAKE_STEP_PART *p)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						BN_print(conn, p->gx);
 | 
				
			||||||
 | 
						BIO_puts(conn, "\n");
 | 
				
			||||||
 | 
						BN_print(conn, p->zkpx.gr);
 | 
				
			||||||
 | 
						BIO_puts(conn, "\n");
 | 
				
			||||||
 | 
						BN_print(conn, p->zkpx.b);
 | 
				
			||||||
 | 
						BIO_puts(conn, "\n");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_send_step1(BIO *bconn, JPAKE_CTX *ctx)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP1 s1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP1_init(&s1);
 | 
				
			||||||
 | 
						JPAKE_STEP1_generate(&s1, ctx);
 | 
				
			||||||
 | 
						jpake_send_part(bconn, &s1.p1);
 | 
				
			||||||
 | 
						jpake_send_part(bconn, &s1.p2);
 | 
				
			||||||
 | 
						(void)BIO_flush(bconn);
 | 
				
			||||||
 | 
						JPAKE_STEP1_release(&s1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_send_step2(BIO *bconn, JPAKE_CTX *ctx)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP2 s2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP2_init(&s2);
 | 
				
			||||||
 | 
						JPAKE_STEP2_generate(&s2, ctx);
 | 
				
			||||||
 | 
						jpake_send_part(bconn, &s2);
 | 
				
			||||||
 | 
						(void)BIO_flush(bconn);
 | 
				
			||||||
 | 
						JPAKE_STEP2_release(&s2);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_send_step3a(BIO *bconn, JPAKE_CTX *ctx)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP3A s3a;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP3A_init(&s3a);
 | 
				
			||||||
 | 
						JPAKE_STEP3A_generate(&s3a, ctx);
 | 
				
			||||||
 | 
						BIO_write(bconn, s3a.hhk, sizeof s3a.hhk);
 | 
				
			||||||
 | 
						(void)BIO_flush(bconn);
 | 
				
			||||||
 | 
						JPAKE_STEP3A_release(&s3a);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_send_step3b(BIO *bconn, JPAKE_CTX *ctx)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP3B s3b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP3B_init(&s3b);
 | 
				
			||||||
 | 
						JPAKE_STEP3B_generate(&s3b, ctx);
 | 
				
			||||||
 | 
						BIO_write(bconn, s3b.hk, sizeof s3b.hk);
 | 
				
			||||||
 | 
						(void)BIO_flush(bconn);
 | 
				
			||||||
 | 
						JPAKE_STEP3B_release(&s3b);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void readbn(BIGNUM **bn, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						char buf[10240];
 | 
				
			||||||
 | 
						int l;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						l = BIO_gets(bconn, buf, sizeof buf);
 | 
				
			||||||
 | 
						assert(l > 0);
 | 
				
			||||||
 | 
						assert(buf[l-1] == '\n');
 | 
				
			||||||
 | 
						buf[l-1] = '\0';
 | 
				
			||||||
 | 
						BN_hex2bn(bn, buf);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_receive_part(JPAKE_STEP_PART *p, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						readbn(&p->gx, bconn);
 | 
				
			||||||
 | 
						readbn(&p->zkpx.gr, bconn);
 | 
				
			||||||
 | 
						readbn(&p->zkpx.b, bconn);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_receive_step1(JPAKE_CTX *ctx, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP1 s1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP1_init(&s1);
 | 
				
			||||||
 | 
						jpake_receive_part(&s1.p1, bconn);
 | 
				
			||||||
 | 
						jpake_receive_part(&s1.p2, bconn);
 | 
				
			||||||
 | 
						if(!JPAKE_STEP1_process(ctx, &s1))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
							exit(1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						JPAKE_STEP1_release(&s1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_receive_step2(JPAKE_CTX *ctx, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP2 s2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP2_init(&s2);
 | 
				
			||||||
 | 
						jpake_receive_part(&s2, bconn);
 | 
				
			||||||
 | 
						if(!JPAKE_STEP2_process(ctx, &s2))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
							exit(1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						JPAKE_STEP2_release(&s2);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_receive_step3a(JPAKE_CTX *ctx, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP3A s3a;
 | 
				
			||||||
 | 
						int l;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP3A_init(&s3a);
 | 
				
			||||||
 | 
						l = BIO_read(bconn, s3a.hhk, sizeof s3a.hhk);
 | 
				
			||||||
 | 
						assert(l == sizeof s3a.hhk);
 | 
				
			||||||
 | 
						if(!JPAKE_STEP3A_process(ctx, &s3a))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
							exit(1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						JPAKE_STEP3A_release(&s3a);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void jpake_receive_step3b(JPAKE_CTX *ctx, BIO *bconn)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_STEP3B s3b;
 | 
				
			||||||
 | 
						int l;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						JPAKE_STEP3B_init(&s3b);
 | 
				
			||||||
 | 
						l = BIO_read(bconn, s3b.hk, sizeof s3b.hk);
 | 
				
			||||||
 | 
						assert(l == sizeof s3b.hk);
 | 
				
			||||||
 | 
						if(!JPAKE_STEP3B_process(ctx, &s3b))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
							exit(1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						JPAKE_STEP3B_release(&s3b);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void jpake_client_auth(BIO *out, BIO *conn, const char *secret)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_CTX *ctx;
 | 
				
			||||||
 | 
						BIO *bconn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BIO_puts(out, "Authenticating with JPAKE\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx = jpake_init("client", "server", secret);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bconn = BIO_new(BIO_f_buffer());
 | 
				
			||||||
 | 
						BIO_push(bconn, conn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						jpake_send_step1(bconn, ctx);
 | 
				
			||||||
 | 
						jpake_receive_step1(ctx, bconn);
 | 
				
			||||||
 | 
						jpake_send_step2(bconn, ctx);
 | 
				
			||||||
 | 
						jpake_receive_step2(ctx, bconn);
 | 
				
			||||||
 | 
						jpake_send_step3a(bconn, ctx);
 | 
				
			||||||
 | 
						jpake_receive_step3b(ctx, bconn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * The problem is that you must use the derived key in the
 | 
				
			||||||
 | 
						 * session key or you are subject to man-in-the-middle
 | 
				
			||||||
 | 
						 * attacks.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						BIO_puts(out, "JPAKE authentication succeeded (N.B. This version can"
 | 
				
			||||||
 | 
							 " be MitMed. See the version in HEAD for how to do it"
 | 
				
			||||||
 | 
							 " properly)\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BIO_pop(bconn);
 | 
				
			||||||
 | 
						BIO_free(bconn);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void jpake_server_auth(BIO *out, BIO *conn, const char *secret)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						JPAKE_CTX *ctx;
 | 
				
			||||||
 | 
						BIO *bconn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BIO_puts(out, "Authenticating with JPAKE\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx = jpake_init("server", "client", secret);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bconn = BIO_new(BIO_f_buffer());
 | 
				
			||||||
 | 
						BIO_push(bconn, conn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						jpake_receive_step1(ctx, bconn);
 | 
				
			||||||
 | 
						jpake_send_step1(bconn, ctx);
 | 
				
			||||||
 | 
						jpake_receive_step2(ctx, bconn);
 | 
				
			||||||
 | 
						jpake_send_step2(bconn, ctx);
 | 
				
			||||||
 | 
						jpake_receive_step3a(ctx, bconn);
 | 
				
			||||||
 | 
						jpake_send_step3b(bconn, ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * The problem is that you must use the derived key in the
 | 
				
			||||||
 | 
						 * session key or you are subject to man-in-the-middle
 | 
				
			||||||
 | 
						 * attacks.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						BIO_puts(out, "JPAKE authentication succeeded (N.B. This version can"
 | 
				
			||||||
 | 
							 " be MitMed. See the version in HEAD for how to do it"
 | 
				
			||||||
 | 
							 " properly)\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BIO_pop(bconn);
 | 
				
			||||||
 | 
						BIO_free(bconn);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								apps/apps.h
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								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);
 | 
				
			||||||
@@ -231,6 +234,12 @@ extern int in_FIPS_mode;
 | 
				
			|||||||
#  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;
 | 
				
			||||||
@@ -278,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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -323,6 +338,10 @@ X509_NAME *parse_name(char *str, long chtype, int multirdn);
 | 
				
			|||||||
int args_verify(char ***pargs, int *pargc,
 | 
					int args_verify(char ***pargs, int *pargc,
 | 
				
			||||||
			int *badarg, BIO *err, X509_VERIFY_PARAM **pm);
 | 
								int *badarg, BIO *err, X509_VERIFY_PARAM **pm);
 | 
				
			||||||
void policies_print(BIO *out, X509_STORE_CTX *ctx);
 | 
					void policies_print(BIO *out, X509_STORE_CTX *ctx);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
					void jpake_client_auth(BIO *out, BIO *conn, const char *secret);
 | 
				
			||||||
 | 
					void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FORMAT_UNDEF    0
 | 
					#define FORMAT_UNDEF    0
 | 
				
			||||||
#define FORMAT_ASN1     1
 | 
					#define FORMAT_ASN1     1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,7 @@
 | 
				
			|||||||
 * [including the GNU Public Licence.]
 | 
					 * [including the GNU Public Licence.]
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* A nice addition from Dr Stephen Henson <shenson@bigfoot.com> to 
 | 
					/* A nice addition from Dr Stephen Henson <steve@openssl.org> to 
 | 
				
			||||||
 * add the -strparse option which parses nested binary structures
 | 
					 * add the -strparse option which parses nested binary structures
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -408,6 +408,7 @@ static int do_generate(BIO *bio, char *genstr, char *genconf, BUF_MEM *buf)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	atyp = ASN1_generate_nconf(genstr, cnf);
 | 
						atyp = ASN1_generate_nconf(genstr, cnf);
 | 
				
			||||||
	NCONF_free(cnf);
 | 
						NCONF_free(cnf);
 | 
				
			||||||
 | 
						cnf = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!atyp)
 | 
						if (!atyp)
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										80
									
								
								apps/ca.c
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								apps/ca.c
									
									
									
									
									
								
							@@ -83,7 +83,7 @@
 | 
				
			|||||||
#    else
 | 
					#    else
 | 
				
			||||||
#      include <unixlib.h>
 | 
					#      include <unixlib.h>
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
#  elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_NETWARE)
 | 
					#  elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_NETWARE) && !defined(__TANDEM)
 | 
				
			||||||
#    include <sys/file.h>
 | 
					#    include <sys/file.h>
 | 
				
			||||||
#  endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -216,7 +216,6 @@ static int certify_spkac(X509 **xret, char *infile,EVP_PKEY *pkey,X509 *x509,
 | 
				
			|||||||
			 char *startdate, char *enddate, long days, char *ext_sect,
 | 
								 char *startdate, char *enddate, long days, char *ext_sect,
 | 
				
			||||||
			 CONF *conf, int verbose, unsigned long certopt, 
 | 
								 CONF *conf, int verbose, unsigned long certopt, 
 | 
				
			||||||
			 unsigned long nameopt, int default_op, int ext_copy);
 | 
								 unsigned long nameopt, int default_op, int ext_copy);
 | 
				
			||||||
static int fix_data(int nid, int *type);
 | 
					 | 
				
			||||||
static void write_new_certificate(BIO *bp, X509 *x, int output_der, int notext);
 | 
					static void write_new_certificate(BIO *bp, X509 *x, int output_der, int notext);
 | 
				
			||||||
static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
 | 
					static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
 | 
				
			||||||
	STACK_OF(CONF_VALUE) *policy, CA_DB *db, BIGNUM *serial,char *subj,unsigned long chtype, int multirdn,
 | 
						STACK_OF(CONF_VALUE) *policy, CA_DB *db, BIGNUM *serial,char *subj,unsigned long chtype, int multirdn,
 | 
				
			||||||
@@ -227,7 +226,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
 | 
				
			|||||||
static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval);
 | 
					static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval);
 | 
				
			||||||
static int get_certificate_status(const char *ser_status, CA_DB *db);
 | 
					static int get_certificate_status(const char *ser_status, CA_DB *db);
 | 
				
			||||||
static int do_updatedb(CA_DB *db);
 | 
					static int do_updatedb(CA_DB *db);
 | 
				
			||||||
static int check_time_format(char *str);
 | 
					static int check_time_format(const char *str);
 | 
				
			||||||
char *make_revocation_str(int rev_type, char *rev_arg);
 | 
					char *make_revocation_str(int rev_type, char *rev_arg);
 | 
				
			||||||
int make_revoked(X509_REVOKED *rev, const char *str);
 | 
					int make_revoked(X509_REVOKED *rev, const char *str);
 | 
				
			||||||
int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str);
 | 
					int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str);
 | 
				
			||||||
@@ -858,8 +857,8 @@ bad:
 | 
				
			|||||||
			perror(outdir);
 | 
								perror(outdir);
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#ifdef S_IFDIR
 | 
					#ifdef S_ISDIR
 | 
				
			||||||
		if (!(sb.st_mode & S_IFDIR))
 | 
							if (!S_ISDIR(sb.st_mode))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"%s need to be a directory\n",outdir);
 | 
								BIO_printf(bio_err,"%s need to be a directory\n",outdir);
 | 
				
			||||||
			perror(outdir);
 | 
								perror(outdir);
 | 
				
			||||||
@@ -895,7 +894,7 @@ bad:
 | 
				
			|||||||
			BIO_printf(bio_err," in entry %d\n", i+1);
 | 
								BIO_printf(bio_err," in entry %d\n", i+1);
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (!check_time_format((char *)pp[DB_exp_date]))
 | 
							if (!check_time_format(pp[DB_exp_date]))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"entry %d: invalid expiry date\n",i+1);
 | 
								BIO_printf(bio_err,"entry %d: invalid expiry date\n",i+1);
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
@@ -1249,7 +1248,12 @@ bad:
 | 
				
			|||||||
				BIO_printf(bio_err,"\n%d out of %d certificate requests certified, commit? [y/n]",total_done,total);
 | 
									BIO_printf(bio_err,"\n%d out of %d certificate requests certified, commit? [y/n]",total_done,total);
 | 
				
			||||||
				(void)BIO_flush(bio_err);
 | 
									(void)BIO_flush(bio_err);
 | 
				
			||||||
				buf[0][0]='\0';
 | 
									buf[0][0]='\0';
 | 
				
			||||||
				fgets(buf[0],10,stdin);
 | 
									if (!fgets(buf[0],10,stdin))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										BIO_printf(bio_err,"CERTIFICATION CANCELED: I/O error\n"); 
 | 
				
			||||||
 | 
										ret=0;
 | 
				
			||||||
 | 
										goto err;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				if ((buf[0][0] != 'y') && (buf[0][0] != 'Y'))
 | 
									if ((buf[0][0] != 'y') && (buf[0][0] != 'Y'))
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bio_err,"CERTIFICATION CANCELED\n"); 
 | 
										BIO_printf(bio_err,"CERTIFICATION CANCELED\n"); 
 | 
				
			||||||
@@ -2091,7 +2095,7 @@ again2:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BIO_printf(bio_err,"Certificate is to be certified until ");
 | 
						BIO_printf(bio_err,"Certificate is to be certified until ");
 | 
				
			||||||
	ASN1_UTCTIME_print(bio_err,X509_get_notAfter(ret));
 | 
						ASN1_TIME_print(bio_err,X509_get_notAfter(ret));
 | 
				
			||||||
	if (days) BIO_printf(bio_err," (%ld days)",days);
 | 
						if (days) BIO_printf(bio_err," (%ld days)",days);
 | 
				
			||||||
	BIO_printf(bio_err, "\n");
 | 
						BIO_printf(bio_err, "\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2101,7 +2105,12 @@ again2:
 | 
				
			|||||||
		BIO_printf(bio_err,"Sign the certificate? [y/n]:");
 | 
							BIO_printf(bio_err,"Sign the certificate? [y/n]:");
 | 
				
			||||||
		(void)BIO_flush(bio_err);
 | 
							(void)BIO_flush(bio_err);
 | 
				
			||||||
		buf[0]='\0';
 | 
							buf[0]='\0';
 | 
				
			||||||
		fgets(buf,sizeof(buf)-1,stdin);
 | 
							if (!fgets(buf,sizeof(buf)-1,stdin))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n");
 | 
				
			||||||
 | 
								ok=0;
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		if (!((buf[0] == 'y') || (buf[0] == 'Y')))
 | 
							if (!((buf[0] == 'y') || (buf[0] == 'Y')))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED\n");
 | 
								BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED\n");
 | 
				
			||||||
@@ -2317,25 +2326,9 @@ static int certify_spkac(X509 **xret, char *infile, EVP_PKEY *pkey, X509 *x509,
 | 
				
			|||||||
			continue;
 | 
								continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/*
 | 
							if (!X509_NAME_add_entry_by_NID(n, nid, chtype,
 | 
				
			||||||
		if ((nid == NID_pkcs9_emailAddress) && (email_dn == 0))
 | 
									(unsigned char *)buf, -1, -1, 0))
 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		*/
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		j=ASN1_PRINTABLE_type((unsigned char *)buf,-1);
 | 
					 | 
				
			||||||
		if (fix_data(nid, &j) == 0)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			BIO_printf(bio_err,
 | 
					 | 
				
			||||||
				"invalid characters in string %s\n",buf);
 | 
					 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if ((ne=X509_NAME_ENTRY_create_by_NID(&ne,nid,j,
 | 
					 | 
				
			||||||
			(unsigned char *)buf,
 | 
					 | 
				
			||||||
			strlen(buf))) == NULL)
 | 
					 | 
				
			||||||
			goto err;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (!X509_NAME_add_entry(n,ne,-1, 0)) goto err;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (spki == NULL)
 | 
						if (spki == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -2378,29 +2371,17 @@ err:
 | 
				
			|||||||
	return(ok);
 | 
						return(ok);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int fix_data(int nid, int *type)
 | 
					static int check_time_format(const char *str)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	if (nid == NID_pkcs9_emailAddress)
 | 
						ASN1_TIME tm;
 | 
				
			||||||
		*type=V_ASN1_IA5STRING;
 | 
					 | 
				
			||||||
	if ((nid == NID_commonName) && (*type == V_ASN1_IA5STRING))
 | 
					 | 
				
			||||||
		*type=V_ASN1_T61STRING;
 | 
					 | 
				
			||||||
	if ((nid == NID_pkcs9_challengePassword) && (*type == V_ASN1_IA5STRING))
 | 
					 | 
				
			||||||
		*type=V_ASN1_T61STRING;
 | 
					 | 
				
			||||||
	if ((nid == NID_pkcs9_unstructuredName) && (*type == V_ASN1_T61STRING))
 | 
					 | 
				
			||||||
		return(0);
 | 
					 | 
				
			||||||
	if (nid == NID_pkcs9_unstructuredName)
 | 
					 | 
				
			||||||
		*type=V_ASN1_IA5STRING;
 | 
					 | 
				
			||||||
	return(1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int check_time_format(char *str)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	ASN1_UTCTIME tm;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tm.data=(unsigned char *)str;
 | 
						tm.data=(unsigned char *)str;
 | 
				
			||||||
	tm.length=strlen(str);
 | 
						tm.length=strlen(str);
 | 
				
			||||||
	tm.type=V_ASN1_UTCTIME;
 | 
						tm.type=V_ASN1_UTCTIME;
 | 
				
			||||||
	return(ASN1_UTCTIME_check(&tm));
 | 
						if (ASN1_TIME_check(&tm))
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						tm.type=V_ASN1_GENERALIZEDTIME;
 | 
				
			||||||
 | 
						return ASN1_TIME_check(&tm);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
 | 
					static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
 | 
				
			||||||
@@ -2882,13 +2863,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");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1351
									
								
								apps/cms.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1351
									
								
								apps/cms.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										21
									
								
								apps/crl.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								apps/crl.c
									
									
									
									
									
								
							@@ -85,6 +85,7 @@ static const char *crl_usage[]={
 | 
				
			|||||||
" -issuer         - print issuer DN\n",
 | 
					" -issuer         - print issuer DN\n",
 | 
				
			||||||
" -lastupdate     - lastUpdate field\n",
 | 
					" -lastupdate     - lastUpdate field\n",
 | 
				
			||||||
" -nextupdate     - nextUpdate field\n",
 | 
					" -nextupdate     - nextUpdate field\n",
 | 
				
			||||||
 | 
					" -crlnumber      - print CRL number\n",
 | 
				
			||||||
" -noout          - no CRL output\n",
 | 
					" -noout          - no CRL output\n",
 | 
				
			||||||
" -CAfile  name   - verify CRL using certificates in file \"name\"\n",
 | 
					" -CAfile  name   - verify CRL using certificates in file \"name\"\n",
 | 
				
			||||||
" -CApath  dir    - verify CRL using certificates in \"dir\"\n",
 | 
					" -CApath  dir    - verify CRL using certificates in \"dir\"\n",
 | 
				
			||||||
@@ -107,7 +108,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int informat,outformat;
 | 
						int informat,outformat;
 | 
				
			||||||
	char *infile=NULL,*outfile=NULL;
 | 
						char *infile=NULL,*outfile=NULL;
 | 
				
			||||||
	int hash=0,issuer=0,lastupdate=0,nextupdate=0,noout=0,text=0;
 | 
						int hash=0,issuer=0,lastupdate=0,nextupdate=0,noout=0,text=0;
 | 
				
			||||||
	int fingerprint = 0;
 | 
						int fingerprint = 0, crlnumber = 0;
 | 
				
			||||||
	const char **pp;
 | 
						const char **pp;
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
						X509_STORE *store = NULL;
 | 
				
			||||||
	X509_STORE_CTX ctx;
 | 
						X509_STORE_CTX ctx;
 | 
				
			||||||
@@ -206,6 +207,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			noout= ++num;
 | 
								noout= ++num;
 | 
				
			||||||
		else if (strcmp(*argv,"-fingerprint") == 0)
 | 
							else if (strcmp(*argv,"-fingerprint") == 0)
 | 
				
			||||||
			fingerprint= ++num;
 | 
								fingerprint= ++num;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-crlnumber") == 0)
 | 
				
			||||||
 | 
								crlnumber= ++num;
 | 
				
			||||||
		else if ((md_alg=EVP_get_digestbyname(*argv + 1)))
 | 
							else if ((md_alg=EVP_get_digestbyname(*argv + 1)))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* ok */
 | 
								/* ok */
 | 
				
			||||||
@@ -281,7 +284,21 @@ bad:
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				print_name(bio_out, "issuer=", X509_CRL_get_issuer(x), nmflag);
 | 
									print_name(bio_out, "issuer=", X509_CRL_get_issuer(x), nmflag);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								if (crlnumber == i)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									ASN1_INTEGER *crlnum;
 | 
				
			||||||
 | 
									crlnum = X509_CRL_get_ext_d2i(x, NID_crl_number,
 | 
				
			||||||
 | 
												      NULL, NULL);
 | 
				
			||||||
 | 
									BIO_printf(bio_out,"crlNumber=");
 | 
				
			||||||
 | 
									if (crlnum)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										i2a_ASN1_INTEGER(bio_out, crlnum);
 | 
				
			||||||
 | 
										ASN1_INTEGER_free(crlnum);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										BIO_puts(bio_out, "<NONE>");
 | 
				
			||||||
 | 
									BIO_printf(bio_out,"\n");
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			if (hash == i)
 | 
								if (hash == i)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				BIO_printf(bio_out,"%08lx\n",
 | 
									BIO_printf(bio_out,"%08lx\n",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	ENGINE *e = NULL;
 | 
						ENGINE *e = NULL;
 | 
				
			||||||
	unsigned char *buf=NULL;
 | 
						unsigned char *buf=NULL;
 | 
				
			||||||
	int i,err=0;
 | 
						int i,err=1;
 | 
				
			||||||
	const EVP_MD *md=NULL,*m;
 | 
						const EVP_MD *md=NULL,*m;
 | 
				
			||||||
	BIO *in=NULL,*inp;
 | 
						BIO *in=NULL,*inp;
 | 
				
			||||||
	BIO *bmd=NULL;
 | 
						BIO *bmd=NULL;
 | 
				
			||||||
@@ -215,6 +215,8 @@ ERR_load_crypto_strings();
 | 
				
			|||||||
			debug=1;
 | 
								debug=1;
 | 
				
			||||||
		else if (strcmp(*argv,"-non-fips-allow") == 0)
 | 
							else if (strcmp(*argv,"-non-fips-allow") == 0)
 | 
				
			||||||
			non_fips_allow=1;
 | 
								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)
 | 
				
			||||||
@@ -252,6 +254,7 @@ ERR_load_crypto_strings();
 | 
				
			|||||||
		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
 | 
				
			||||||
@@ -412,6 +415,7 @@ ERR_load_crypto_strings();
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		name=OBJ_nid2sn(md->type);
 | 
							name=OBJ_nid2sn(md->type);
 | 
				
			||||||
 | 
							err = 0;
 | 
				
			||||||
		for (i=0; i<argc; i++)
 | 
							for (i=0; i<argc; i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			char *tmp,*tofree=NULL;
 | 
								char *tmp,*tofree=NULL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,9 +88,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	DH *dh=NULL;
 | 
						DH *dh=NULL;
 | 
				
			||||||
	int i,badops=0,text=0;
 | 
						int i,badops=0,text=0;
 | 
				
			||||||
	BIO *in=NULL,*out=NULL;
 | 
						BIO *in=NULL,*out=NULL;
 | 
				
			||||||
@@ -189,7 +186,7 @@ bad:
 | 
				
			|||||||
	ERR_load_crypto_strings();
 | 
						ERR_load_crypto_strings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	in=BIO_new(BIO_s_file());
 | 
						in=BIO_new(BIO_s_file());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -149,9 +149,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	DH *dh=NULL;
 | 
						DH *dh=NULL;
 | 
				
			||||||
	int i,badops=0,text=0;
 | 
						int i,badops=0,text=0;
 | 
				
			||||||
#ifndef OPENSSL_NO_DSA
 | 
					#ifndef OPENSSL_NO_DSA
 | 
				
			||||||
@@ -270,7 +267,7 @@ bad:
 | 
				
			|||||||
	ERR_load_crypto_strings();
 | 
						ERR_load_crypto_strings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (g && !num)
 | 
						if (g && !num)
 | 
				
			||||||
@@ -335,7 +332,6 @@ bad:
 | 
				
			|||||||
			BIO_printf(bio_err,"This is going to take a long time\n");
 | 
								BIO_printf(bio_err,"This is going to take a long time\n");
 | 
				
			||||||
			if(!dh || !DH_generate_parameters_ex(dh, num, g, &cb))
 | 
								if(!dh || !DH_generate_parameters_ex(dh, num, g, &cb))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if(dh) DH_free(dh);
 | 
					 | 
				
			||||||
				ERR_print_errors(bio_err);
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
				goto end;
 | 
									goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										42
									
								
								apps/dsa.c
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								apps/dsa.c
									
									
									
									
									
								
							@@ -65,11 +65,11 @@
 | 
				
			|||||||
#include "apps.h"
 | 
					#include "apps.h"
 | 
				
			||||||
#include <openssl/bio.h>
 | 
					#include <openssl/bio.h>
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
#include <openssl/dsa.h>
 | 
					 | 
				
			||||||
#include <openssl/evp.h>
 | 
					#include <openssl/evp.h>
 | 
				
			||||||
#include <openssl/x509.h>
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
#include <openssl/pem.h>
 | 
					#include <openssl/pem.h>
 | 
				
			||||||
#include <openssl/bn.h>
 | 
					#include <openssl/bn.h>
 | 
				
			||||||
 | 
					#include <openssl/dsa.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef PROG
 | 
					#undef PROG
 | 
				
			||||||
#define PROG	dsa_main
 | 
					#define PROG	dsa_main
 | 
				
			||||||
@@ -96,9 +96,7 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
						ENGINE *e = NULL;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	DSA *dsa=NULL;
 | 
						DSA *dsa=NULL;
 | 
				
			||||||
	int i,badops=0;
 | 
						int i,badops=0;
 | 
				
			||||||
@@ -240,37 +238,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");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -111,9 +111,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	DSA *dsa=NULL;
 | 
						DSA *dsa=NULL;
 | 
				
			||||||
	int i,badops=0,text=0;
 | 
						int i,badops=0,text=0;
 | 
				
			||||||
	BIO *in=NULL,*out=NULL;
 | 
						BIO *in=NULL,*out=NULL;
 | 
				
			||||||
@@ -278,7 +275,7 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (need_rand)
 | 
						if (need_rand)
 | 
				
			||||||
@@ -357,12 +354,10 @@ bad:
 | 
				
			|||||||
	if (C)
 | 
						if (C)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		unsigned char *data;
 | 
							unsigned char *data;
 | 
				
			||||||
		int l,len,bits_p,bits_q,bits_g;
 | 
							int l,len,bits_p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		len=BN_num_bytes(dsa->p);
 | 
							len=BN_num_bytes(dsa->p);
 | 
				
			||||||
		bits_p=BN_num_bits(dsa->p);
 | 
							bits_p=BN_num_bits(dsa->p);
 | 
				
			||||||
		bits_q=BN_num_bits(dsa->q);
 | 
					 | 
				
			||||||
		bits_g=BN_num_bits(dsa->g);
 | 
					 | 
				
			||||||
		data=(unsigned char *)OPENSSL_malloc(len+20);
 | 
							data=(unsigned char *)OPENSSL_malloc(len+20);
 | 
				
			||||||
		if (data == NULL)
 | 
							if (data == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -475,4 +470,10 @@ static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_DSA */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,9 +85,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE 	*e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	int 	ret = 1;
 | 
						int 	ret = 1;
 | 
				
			||||||
	EC_KEY 	*eckey = NULL;
 | 
						EC_KEY 	*eckey = NULL;
 | 
				
			||||||
	const EC_GROUP *group;
 | 
						const EC_GROUP *group;
 | 
				
			||||||
@@ -244,7 +241,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");
 | 
				
			||||||
@@ -254,7 +251,7 @@ bad:
 | 
				
			|||||||
	ERR_load_crypto_strings();
 | 
						ERR_load_crypto_strings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!app_passwd(bio_err, passargin, passargout, &passin, &passout)) 
 | 
						if(!app_passwd(bio_err, passargin, passargout, &passin, &passout)) 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -129,9 +129,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	char	*infile = NULL, *outfile = NULL, *prog;
 | 
						char	*infile = NULL, *outfile = NULL, *prog;
 | 
				
			||||||
	BIO 	*in = NULL, *out = NULL;
 | 
						BIO 	*in = NULL, *out = NULL;
 | 
				
			||||||
	int 	informat, outformat, noout = 0, C = 0, ret = 1;
 | 
						int 	informat, outformat, noout = 0, C = 0, ret = 1;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE	*e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	char	*engine = NULL;
 | 
						char	*engine = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BIGNUM	*ec_p = NULL, *ec_a = NULL, *ec_b = NULL,
 | 
						BIGNUM	*ec_p = NULL, *ec_a = NULL, *ec_b = NULL,
 | 
				
			||||||
@@ -340,7 +337,7 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	e = setup_engine(bio_err, engine, 0);
 | 
						setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (list_curves)
 | 
						if (list_curves)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								apps/enc.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								apps/enc.c
									
									
									
									
									
								
							@@ -100,9 +100,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	static const char magic[]="Salted__";
 | 
						static const char magic[]="Salted__";
 | 
				
			||||||
	char mbuf[sizeof magic-1];
 | 
						char mbuf[sizeof magic-1];
 | 
				
			||||||
	char *strbuf=NULL;
 | 
						char *strbuf=NULL;
 | 
				
			||||||
@@ -226,7 +223,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				goto bad;
 | 
									goto bad;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			buf[0]='\0';
 | 
								buf[0]='\0';
 | 
				
			||||||
			fgets(buf,sizeof buf,infile);
 | 
								if (!fgets(buf,sizeof buf,infile))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(bio_err,"unable to read key from '%s'\n",
 | 
				
			||||||
 | 
										file);
 | 
				
			||||||
 | 
									goto bad;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			fclose(infile);
 | 
								fclose(infile);
 | 
				
			||||||
			i=strlen(buf);
 | 
								i=strlen(buf);
 | 
				
			||||||
			if ((i > 0) &&
 | 
								if ((i > 0) &&
 | 
				
			||||||
@@ -306,7 +308,7 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (md && (dgst=EVP_get_digestbyname(md)) == NULL)
 | 
						if (md && (dgst=EVP_get_digestbyname(md)) == NULL)
 | 
				
			||||||
@@ -533,7 +535,8 @@ bad:
 | 
				
			|||||||
			BIO_printf(bio_err,"invalid hex iv value\n");
 | 
								BIO_printf(bio_err,"invalid hex iv value\n");
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if ((hiv == NULL) && (str == NULL))
 | 
							if ((hiv == NULL) && (str == NULL)
 | 
				
			||||||
 | 
							    && EVP_CIPHER_iv_length(cipher) != 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* No IV was explicitly set and no IV was generated
 | 
								/* No IV was explicitly set and no IV was generated
 | 
				
			||||||
			 * during EVP_BytesToKey. Hence the IV is undefined,
 | 
								 * during EVP_BytesToKey. Hence the IV is undefined,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,6 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
@@ -66,6 +65,7 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include "apps.h"
 | 
					#include "apps.h"
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
#include <openssl/engine.h>
 | 
					#include <openssl/engine.h>
 | 
				
			||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -252,7 +252,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
 | 
				
			|||||||
                        /* Now decide on the output */
 | 
					                        /* Now decide on the output */
 | 
				
			||||||
                        if(xpos == 0)
 | 
					                        if(xpos == 0)
 | 
				
			||||||
                                /* Do an indent */
 | 
					                                /* Do an indent */
 | 
				
			||||||
                                xpos = BIO_printf(bio_out, indent);
 | 
					                                xpos = BIO_puts(bio_out, indent);
 | 
				
			||||||
                        else
 | 
					                        else
 | 
				
			||||||
                                /* Otherwise prepend a ", " */
 | 
					                                /* Otherwise prepend a ", " */
 | 
				
			||||||
                                xpos += BIO_printf(bio_out, ", ");
 | 
					                                xpos += BIO_printf(bio_out, ", ");
 | 
				
			||||||
@@ -263,7 +263,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
 | 
				
			|||||||
					(xpos + (int)strlen(name) > line_wrap))
 | 
										(xpos + (int)strlen(name) > line_wrap))
 | 
				
			||||||
                                        {
 | 
					                                        {
 | 
				
			||||||
                                        BIO_printf(bio_out, "\n");
 | 
					                                        BIO_printf(bio_out, "\n");
 | 
				
			||||||
                                        xpos = BIO_printf(bio_out, indent);
 | 
					                                        xpos = BIO_puts(bio_out, indent);
 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
                                xpos += BIO_printf(bio_out, "%s", name);
 | 
					                                xpos += BIO_printf(bio_out, "%s", name);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,9 +89,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BN_GENCB cb;
 | 
						BN_GENCB cb;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	DH *dh=NULL;
 | 
						DH *dh=NULL;
 | 
				
			||||||
	int ret=1,num=DEFBITS;
 | 
						int ret=1,num=DEFBITS;
 | 
				
			||||||
	int g=2;
 | 
						int g=2;
 | 
				
			||||||
@@ -163,7 +160,7 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	out=BIO_new(BIO_s_file());
 | 
						out=BIO_new(BIO_s_file());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,9 +78,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	DSA *dsa=NULL;
 | 
						DSA *dsa=NULL;
 | 
				
			||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	char *outfile=NULL;
 | 
						char *outfile=NULL;
 | 
				
			||||||
@@ -206,7 +203,7 @@ bad:
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!app_passwd(bio_err, NULL, passargout, NULL, &passout)) {
 | 
						if(!app_passwd(bio_err, NULL, passargout, NULL, &passout)) {
 | 
				
			||||||
@@ -279,4 +276,10 @@ end:
 | 
				
			|||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_DSA */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,9 +89,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BN_GENCB cb;
 | 
						BN_GENCB cb;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	int i,num=DEFBITS;
 | 
						int i,num=DEFBITS;
 | 
				
			||||||
	long l;
 | 
						long l;
 | 
				
			||||||
@@ -106,9 +103,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	char *inrand=NULL;
 | 
						char *inrand=NULL;
 | 
				
			||||||
	BIO *out=NULL;
 | 
						BIO *out=NULL;
 | 
				
			||||||
	BIGNUM *bn = BN_new();
 | 
						BIGNUM *bn = BN_new();
 | 
				
			||||||
	RSA *rsa = RSA_new();
 | 
						RSA *rsa = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!bn || !rsa) goto err;
 | 
						if(!bn) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
	BN_GENCB_set(&cb, genrsa_cb, bio_err);
 | 
						BN_GENCB_set(&cb, genrsa_cb, bio_err);
 | 
				
			||||||
@@ -235,7 +232,7 @@ bad:
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (outfile == NULL)
 | 
						if (outfile == NULL)
 | 
				
			||||||
@@ -269,6 +266,10 @@ 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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rsa = RSA_new();
 | 
				
			||||||
 | 
						if (!rsa)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (use_x931)
 | 
						if (use_x931)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIGNUM *pubexp;
 | 
							BIGNUM *pubexp;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,13 +5,23 @@ $! Time of creation: 22-MAY-1998 10:13
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$! P1	root of the directory tree
 | 
					$! P1	root of the directory tree
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
$	IF P1 .EQS. ""
 | 
					$	IF P1 .EQS. ""
 | 
				
			||||||
$	THEN
 | 
					$	THEN
 | 
				
			||||||
$	    WRITE SYS$OUTPUT "First argument missing."
 | 
					$	    WRITE SYS$OUTPUT "First argument missing."
 | 
				
			||||||
$	    WRITE SYS$OUTPUT "Should be the directory where you want things installed."
 | 
					$	    WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
							  "Should be the directory where you want things installed."
 | 
				
			||||||
$	    EXIT
 | 
					$	    EXIT
 | 
				
			||||||
$	ENDIF
 | 
					$	ENDIF
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
 | 
					$	IF (F$GETSYI("CPU").LT.128)
 | 
				
			||||||
 | 
					$	THEN
 | 
				
			||||||
 | 
					$	    ARCH := VAX
 | 
				
			||||||
 | 
					$	ELSE
 | 
				
			||||||
 | 
					$	    ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
 | 
				
			||||||
 | 
					$	    IF (ARCH .EQS. "") THEN ARCH = "UNK"
 | 
				
			||||||
 | 
					$	ENDIF
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
					$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
				
			||||||
$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
					$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
				
			||||||
$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
					$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
				
			||||||
@@ -19,23 +29,16 @@ $	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
				
			|||||||
$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
					$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
 | 
					$	DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
 | 
					$	DEFINE/NOLOG WRK_SSLEXE WRK_SSLROOT:['ARCH'_EXE]
 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
 | 
					 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
 | 
					$	IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
						   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
				
			||||||
$	IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN -
 | 
					$	IF F$PARSE("WRK_SSLEXE:") .EQS. "" THEN -
 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLVEXE:
 | 
						   CREATE/DIR/LOG WRK_SSLEXE:
 | 
				
			||||||
$	IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLAEXE:
 | 
					 | 
				
			||||||
$	IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLLIB:
 | 
					 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	EXE := openssl
 | 
					$	EXE := openssl
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	VEXE_DIR := [-.VAX.EXE.APPS]
 | 
					$	EXE_DIR := [-.'ARCH'.EXE.APPS]
 | 
				
			||||||
$	AEXE_DIR := [-.AXP.EXE.APPS]
 | 
					 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	I = 0
 | 
					$	I = 0
 | 
				
			||||||
$ LOOP_EXE: 
 | 
					$ LOOP_EXE: 
 | 
				
			||||||
@@ -43,25 +46,18 @@ $	E = F$EDIT(F$ELEMENT(I, ",", EXE),"TRIM")
 | 
				
			|||||||
$	I = I + 1
 | 
					$	I = I + 1
 | 
				
			||||||
$	IF E .EQS. "," THEN GOTO LOOP_EXE_END
 | 
					$	IF E .EQS. "," THEN GOTO LOOP_EXE_END
 | 
				
			||||||
$	SET NOON
 | 
					$	SET NOON
 | 
				
			||||||
$	IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
 | 
					$	IF F$SEARCH(EXE_DIR+E+".EXE") .NES. ""
 | 
				
			||||||
$	THEN
 | 
					$	THEN
 | 
				
			||||||
$	  COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
 | 
					$	  COPY 'EXE_DIR''E'.EXE WRK_SSLEXE:'E'.EXE/log
 | 
				
			||||||
$	  SET FILE/PROT=W:RE WRK_SSLVEXE:'E'.EXE
 | 
					$	  SET FILE/PROT=W:RE WRK_SSLEXE:'E'.EXE
 | 
				
			||||||
$	ENDIF
 | 
					 | 
				
			||||||
$	IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
 | 
					 | 
				
			||||||
$	THEN
 | 
					 | 
				
			||||||
$	  COPY 'AEXE_DIR''E'.EXE WRK_SSLAEXE:'E'.EXE/log
 | 
					 | 
				
			||||||
$	  SET FILE/PROT=W:RE WRK_SSLAEXE:'E'.EXE
 | 
					 | 
				
			||||||
$	ENDIF
 | 
					$	ENDIF
 | 
				
			||||||
$	SET ON
 | 
					$	SET ON
 | 
				
			||||||
$	GOTO LOOP_EXE
 | 
					$	GOTO LOOP_EXE
 | 
				
			||||||
$ LOOP_EXE_END:
 | 
					$ LOOP_EXE_END:
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$	SET NOON
 | 
					$	SET NOON
 | 
				
			||||||
$	COPY CA.COM WRK_SSLAEXE:CA.COM/LOG
 | 
					$	COPY CA.COM WRK_SSLEXE:CA.COM/LOG
 | 
				
			||||||
$	SET FILE/PROT=W:RE WRK_SSLAEXE:CA.COM
 | 
					$	SET FILE/PROT=W:RE WRK_SSLEXE:CA.COM
 | 
				
			||||||
$	COPY CA.COM WRK_SSLVEXE:CA.COM/LOG
 | 
					 | 
				
			||||||
$	SET FILE/PROT=W:RE WRK_SSLVEXE:CA.COM
 | 
					 | 
				
			||||||
$	COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
 | 
					$	COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
 | 
				
			||||||
$	SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
 | 
					$	SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
 | 
				
			||||||
$	SET ON
 | 
					$	SET ON
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,11 +6,12 @@ $!               A-Com Computing, Inc.
 | 
				
			|||||||
$!               byer@mail.all-net.net
 | 
					$!               byer@mail.all-net.net
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Changes by Richard Levitte <richard@levitte.org>
 | 
					$!  Changes by Richard Levitte <richard@levitte.org>
 | 
				
			||||||
 | 
					$!             Zoltan Arpadffy <zoli@polarhome.com>   
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  This command files compiles and creates all the various different
 | 
					$!  This command files compiles and creates all the various different
 | 
				
			||||||
$!  "application" programs for the different types of encryption for OpenSSL.
 | 
					$!  "application" programs for the different types of encryption for OpenSSL.
 | 
				
			||||||
$!  The EXE's are placed in the directory [.xxx.EXE.APPS] where "xxx" denotes
 | 
					$!  The EXE's are placed in the directory [.xxx.EXE.APPS] where "xxx" denotes
 | 
				
			||||||
$!  either AXP or VAX depending on your machine architecture.
 | 
					$!  ALPHA, IA64 or VAX, depending on your machine architecture.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  It was written so it would try to determine what "C" compiler to
 | 
					$!  It was written so it would try to determine what "C" compiler to
 | 
				
			||||||
$!  use or you can specify which "C" compiler to use.
 | 
					$!  use or you can specify which "C" compiler to use.
 | 
				
			||||||
@@ -46,20 +47,21 @@ $ TCPIP_LIB = ""
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$! Check What Architecture We Are Using.
 | 
					$! Check What Architecture We Are Using.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (F$GETSYI("CPU").GE.128)
 | 
					$ IF (F$GETSYI("CPU").LT.128)
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  The Architecture Is AXP.
 | 
					$!  The Architecture Is VAX.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   ARCH := AXP
 | 
					$   ARCH := VAX
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Else...
 | 
					$! Else...
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ELSE
 | 
					$ ELSE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  The Architecture Is VAX.
 | 
					$!  The Architecture Is Alpha, IA64 or whatever comes in the future.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   ARCH := VAX
 | 
					$   ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
 | 
				
			||||||
 | 
					$   IF (ARCH .EQS. "") THEN ARCH = "UNK"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! End The Architecture Check.
 | 
					$! End The Architecture Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -68,22 +70,6 @@ $!
 | 
				
			|||||||
$! Define what programs should be compiled
 | 
					$! Define what programs should be compiled
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ PROGRAMS := OPENSSL
 | 
					$ PROGRAMS := OPENSSL
 | 
				
			||||||
$!$ PROGRAMS := VERIFY,ASN1PARS,REQ,DGST,DH,ENC,PASSWD,GENDH,ERRSTR,CA,CRL,-
 | 
					 | 
				
			||||||
$!	      RSA,DSA,DSAPARAM,-
 | 
					 | 
				
			||||||
$!	      X509,GENRSA,GENDSA,S_SERVER,S_CLIENT,SPEED,-
 | 
					 | 
				
			||||||
$!	      S_TIME,VERSION,PKCS7,CRL2P7,SESS_ID,CIPHERS,NSEQ,
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Check To Make Sure We Have Valid Command Line Parameters.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ GOSUB CHECK_OPTIONS
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Initialise logical names and such
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ GOSUB INITIALISE
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Tell The User What Kind of Machine We Run On.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Define The CRYPTO Library.
 | 
					$! Define The CRYPTO Library.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -97,6 +83,22 @@ $! Define The OBJ Directory.
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS]
 | 
					$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS]
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$! Define The EXE Directory.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Check To Make Sure We Have Valid Command Line Parameters.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ GOSUB CHECK_OPTIONS
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Initialise logical names and such
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ GOSUB INITIALISE
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Tell The User What Kind of Machine We Run On.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$! Check To See If The OBJ Directory Exists.
 | 
					$! Check To See If The OBJ Directory Exists.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (F$PARSE(OBJ_DIR).EQS."")
 | 
					$ IF (F$PARSE(OBJ_DIR).EQS."")
 | 
				
			||||||
@@ -110,10 +112,6 @@ $! End The OBJ Directory Check.
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Define The EXE Directory.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Check To See If The EXE Directory Exists.
 | 
					$! Check To See If The EXE Directory Exists.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (F$PARSE(EXE_DIR).EQS."")
 | 
					$ IF (F$PARSE(EXE_DIR).EQS."")
 | 
				
			||||||
@@ -136,140 +134,172 @@ $!
 | 
				
			|||||||
$ GOSUB CHECK_OPT_FILE
 | 
					$ GOSUB CHECK_OPT_FILE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Define The Application Files.
 | 
					$! Define The Application Files.
 | 
				
			||||||
 | 
					$! NOTE: Some might think this list ugly.  However, it's made this way to
 | 
				
			||||||
 | 
					$! reflect the E_OBJ variable in Makefile as closely as possible, thereby
 | 
				
			||||||
 | 
					$! making it fairly easy to verify that the lists are the same.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ LIB_FILES = "VERIFY;ASN1PARS;REQ;DGST;DH;DHPARAM;ENC;PASSWD;GENDH;ERRSTR;"+-
 | 
					$ LIB_OPENSSL = "VERIFY,ASN1PARS,REQ,DGST,DH,DHPARAM,ENC,PASSWD,GENDH,ERRSTR,"+-
 | 
				
			||||||
	      "CA;PKCS7;CRL2P7;CRL;"+-
 | 
							"CA,PKCS7,CRL2P7,CRL,"+-
 | 
				
			||||||
	      "RSA;RSAUTL;DSA;DSAPARAM;EC;ECPARAM;"+-
 | 
							"RSA,RSAUTL,DSA,DSAPARAM,EC,ECPARAM,"+-
 | 
				
			||||||
	      "X509;GENRSA;GENDSA;S_SERVER;S_CLIENT;SPEED;"+-
 | 
							"X509,GENRSA,GENDSA,S_SERVER,S_CLIENT,SPEED,"+-
 | 
				
			||||||
	      "S_TIME;APPS;S_CB;S_SOCKET;APP_RAND;VERSION;SESS_ID;"+-
 | 
							"S_TIME,APPS,S_CB,S_SOCKET,APP_RAND,VERSION,SESS_ID,"+-
 | 
				
			||||||
	      "CIPHERS;NSEQ;PKCS12;PKCS8;SPKAC;SMIME;RAND;ENGINE;OCSP;PRIME"
 | 
							"CIPHERS,NSEQ,PKCS12,PKCS8,SPKAC,SMIME,RAND,ENGINE,"+-
 | 
				
			||||||
 | 
							"OCSP,PRIME,CMS"
 | 
				
			||||||
$ TCPIP_PROGRAMS = ",,"
 | 
					$ TCPIP_PROGRAMS = ",,"
 | 
				
			||||||
$ IF COMPILER .EQS. "VAXC" THEN -
 | 
					$ IF COMPILER .EQS. "VAXC" THEN -
 | 
				
			||||||
     TCPIP_PROGRAMS = ",OPENSSL,"
 | 
					     TCPIP_PROGRAMS = ",OPENSSL,"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Setup exceptional compilations
 | 
					$! Setup exceptional compilations
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ COMPILEWITH_CC2 = ",S_SERVER,S_CLIENT,"
 | 
					$ COMPILEWITH_CC2 = ",S_SOCKET,S_SERVER,S_CLIENT,"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ PHASE := LIB
 | 
					$ PHASE := LIB
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ RESTART: 
 | 
					$ RESTART: 
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Define A File Counter And Set It To "0".
 | 
					$!  Define An App Counter And Set It To "0".
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ FILE_COUNTER = 0
 | 
					$ APP_COUNTER = 0
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Top Of The File Loop.
 | 
					$!  Top Of The App Loop.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ NEXT_FILE:
 | 
					$ NEXT_APP:
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! O.K, Extract The File Name From The File List.
 | 
					$!  Make The Application File Name
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ FILE_NAME0 = F$EDIT(F$ELEMENT(FILE_COUNTER,";",'PHASE'_FILES),"TRIM")
 | 
					$ CURRENT_APP = F$EDIT(F$ELEMENT(APP_COUNTER,",",PROGRAMS),"TRIM")
 | 
				
			||||||
$ FILE_NAME = F$EDIT(F$ELEMENT(0,",",FILE_NAME0),"TRIM")
 | 
					 | 
				
			||||||
$ EXTRA_OBJ = FILE_NAME0 - FILE_NAME
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Check To See If We Are At The End Of The File List.
 | 
					$!  Create The Executable File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (FILE_NAME0.EQS.";")
 | 
					$   EXE_FILE = EXE_DIR + CURRENT_APP + ".EXE"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Check To See If We Are At The End Of The File List.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ IF (CURRENT_APP.EQS.",")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   IF (PHASE.EQS."LIB")
 | 
					$   IF (PHASE.EQS."LIB")
 | 
				
			||||||
$   THEN
 | 
					$   THEN
 | 
				
			||||||
$     PHASE := APP
 | 
					$     PHASE := APP
 | 
				
			||||||
$     GOTO RESTART
 | 
					$     GOTO RESTART
 | 
				
			||||||
$   ELSE
 | 
					$   ELSE
 | 
				
			||||||
$     GOTO FILE_DONE
 | 
					$     GOTO APP_DONE
 | 
				
			||||||
$   ENDIF
 | 
					$   ENDIF
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Increment The Counter.
 | 
					$!  Increment The Counter.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ FILE_COUNTER = FILE_COUNTER + 1
 | 
					$ APP_COUNTER = APP_COUNTER + 1
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Check to see if this program should actually be compiled
 | 
					$!  Decide if we're building the object files or not.
 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ IF PHASE .EQS. "APP" .AND. -
 | 
					 | 
				
			||||||
     ","+PROGRAMS+"," - (","+F$EDIT(FILE_NAME,"UPCASE")+",") .EQS. ","+PROGRAMS+","
 | 
					 | 
				
			||||||
$ THEN
 | 
					 | 
				
			||||||
$   GOTO NEXT_FILE
 | 
					 | 
				
			||||||
$ ENDIF
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Create The Source File Name.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Create The Object File Name.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Create The Executable File Name.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
 | 
					 | 
				
			||||||
$ ON WARNING THEN GOTO NEXT_FILE
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Check To See If The File We Want To Compile Actually Exists.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ IF (F$SEARCH(SOURCE_FILE).EQS."")
 | 
					 | 
				
			||||||
$ THEN
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$!  Tell The User That The File Dosen't Exist.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$   WRITE SYS$OUTPUT ""
 | 
					 | 
				
			||||||
$   WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
 | 
					 | 
				
			||||||
$   WRITE SYS$OUTPUT ""
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$!  Exit The Build.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$   GOTO EXIT
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! End The File Exist Check.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ ENDIF
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Tell The User What We Are Building.
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (PHASE.EQS."LIB")
 | 
					$ IF (PHASE.EQS."LIB")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
 | 
					 | 
				
			||||||
$ ELSE
 | 
					 | 
				
			||||||
$   WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
 | 
					 | 
				
			||||||
$ ENDIF
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Compile The File.
 | 
					$!  Define A Library File Counter And Set It To "-1".
 | 
				
			||||||
 | 
					$!  -1 Means The Application File Name Is To Be Used.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ON ERROR THEN GOTO NEXT_FILE
 | 
					$   LIB_COUNTER = -1
 | 
				
			||||||
$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
 | 
					 | 
				
			||||||
$ THEN
 | 
					 | 
				
			||||||
$   CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
 | 
					 | 
				
			||||||
$ ELSE
 | 
					 | 
				
			||||||
$   CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
 | 
					 | 
				
			||||||
$ ENDIF
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ON WARNING THEN GOTO NEXT_FILE
 | 
					$!  Create a .OPT file for the object files
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (PHASE.EQS."LIB") 
 | 
					$   OPEN/WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
 | 
				
			||||||
$ THEN 
 | 
					$!
 | 
				
			||||||
$   GOTO NEXT_FILE
 | 
					$!  Top Of The File Loop.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$  NEXT_LIB:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  O.K, Extract The File Name From The File List.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   IF LIB_COUNTER .GE. 0
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$     FILE_NAME = F$EDIT(F$ELEMENT(LIB_COUNTER,",",LIB_'CURRENT_APP'),"TRIM")
 | 
				
			||||||
 | 
					$   ELSE
 | 
				
			||||||
 | 
					$     FILE_NAME = CURRENT_APP
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Check To See If We Are At The End Of The File List.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   IF (FILE_NAME.EQS.",")
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$     CLOSE OBJECTS
 | 
				
			||||||
 | 
					$     GOTO NEXT_APP
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Increment The Counter.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   LIB_COUNTER = LIB_COUNTER + 1
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Create The Source File Name.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Create The Object File Name.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
 | 
				
			||||||
 | 
					$   ON WARNING THEN GOTO NEXT_LIB
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Check To See If The File We Want To Compile Actually Exists.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   IF (F$SEARCH(SOURCE_FILE).EQS."")
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!    Tell The User That The File Dosen't Exist.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!    Exit The Build.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$     GOTO EXIT
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  End The File Exist Check.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Tell The User What We Are Building.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   IF (PHASE.EQS."LIB")
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
 | 
				
			||||||
 | 
					$   ELSE
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Compile The File.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   ON ERROR THEN GOTO NEXT_LIB
 | 
				
			||||||
 | 
					$   IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$     CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
 | 
				
			||||||
 | 
					$   ELSE
 | 
				
			||||||
 | 
					$     CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$   WRITE OBJECTS OBJECT_FILE
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   GOTO NEXT_LIB
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Check if this program works well without a TCPIP library
 | 
					$!  Check if this program works well without a TCPIP library
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - FILE_NAME .NES. TCPIP_PROGRAMS
 | 
					$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - CURRENT_APP .NES. TCPIP_PROGRAMS
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   WRITE SYS$OUTPUT FILE_NAME," needs a TCP/IP library.  Can't link.  Skipping..."
 | 
					$   WRITE SYS$OUTPUT CURRENT_APP," needs a TCP/IP library.  Can't link.  Skipping..."
 | 
				
			||||||
$   GOTO NEXT_FILE
 | 
					$   GOTO NEXT_APP
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Link The Program.
 | 
					$! Link The Program.
 | 
				
			||||||
$! Check To See If We Are To Link With A Specific TCP/IP Library.
 | 
					$! Check To See If We Are To Link With A Specific TCP/IP Library.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$ ON WARNING THEN GOTO NEXT_APP
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$ IF (TCPIP_LIB.NES."")
 | 
					$ IF (TCPIP_LIB.NES."")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Don't Link With The RSAREF Routines And TCP/IP Library.
 | 
					$! Don't Link With The RSAREF Routines And TCP/IP Library.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
 | 
					$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
 | 
				
			||||||
	'OBJECT_FILE''EXTRA_OBJ', -
 | 
						'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
 | 
				
			||||||
        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
					        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
				
			||||||
        'TCPIP_LIB','OPT_FILE'/OPTION
 | 
					        'TCPIP_LIB','OPT_FILE'/OPTION
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -280,7 +310,7 @@ $!
 | 
				
			|||||||
$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
 | 
					$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
 | 
					$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
 | 
				
			||||||
	'OBJECT_FILE''EXTRA_OBJ', -
 | 
						'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
 | 
				
			||||||
        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
					        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
				
			||||||
        'OPT_FILE'/OPTION
 | 
					        'OPT_FILE'/OPTION
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -290,11 +320,11 @@ $ ENDIF
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$! Go Back And Do It Again.
 | 
					$! Go Back And Do It Again.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ GOTO NEXT_FILE
 | 
					$ GOTO NEXT_APP
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! All Done With This File.
 | 
					$! All Done With This File.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ FILE_DONE:
 | 
					$ APP_DONE:
 | 
				
			||||||
$ EXIT:
 | 
					$ EXIT:
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! All Done, Time To Clean Up And Exit.
 | 
					$! All Done, Time To Clean Up And Exit.
 | 
				
			||||||
@@ -395,19 +425,19 @@ $!    Else...
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$     ELSE
 | 
					$     ELSE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!      Create The AXP Linker Option File.
 | 
					$!      Create The non-VAX Linker Option File.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$       CREATE 'OPT_FILE'
 | 
					$       CREATE 'OPT_FILE'
 | 
				
			||||||
$DECK
 | 
					$DECK
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
! Default System Options File For AXP To Link Agianst 
 | 
					! Default System Options File For non-VAX To Link Agianst 
 | 
				
			||||||
! The Sharable C Runtime Library.
 | 
					! The Sharable C Runtime Library.
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
 | 
					SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
 | 
				
			||||||
SYS$SHARE:CMA$OPEN_RTL/SHARE
 | 
					SYS$SHARE:CMA$OPEN_RTL/SHARE
 | 
				
			||||||
$EOD
 | 
					$EOD
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    End The VAX/AXP DEC C Option File Check.
 | 
					$!    End The DEC C Option File Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     ENDIF
 | 
					$     ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -556,7 +586,7 @@ $   ELSE
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Check To See If We Have VAXC Or DECC.
 | 
					$!  Check To See If We Have VAXC Or DECC.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
 | 
					$     IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
 | 
				
			||||||
$     THEN 
 | 
					$     THEN 
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!      Looks Like DECC, Set To Use DECC.
 | 
					$!      Looks Like DECC, Set To Use DECC.
 | 
				
			||||||
@@ -666,7 +696,7 @@ $     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define The Linker Options File Name.
 | 
					$!    Define The Linker Options File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
 | 
					$     OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End DECC Check.
 | 
					$!  End DECC Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -687,9 +717,9 @@ $!
 | 
				
			|||||||
$!    Compile Using VAXC.
 | 
					$!    Compile Using VAXC.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     CC = "CC"
 | 
					$     CC = "CC"
 | 
				
			||||||
$     IF ARCH.EQS."AXP"
 | 
					$     IF ARCH.NES."VAX"
 | 
				
			||||||
$     THEN
 | 
					$     THEN
 | 
				
			||||||
$	WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
 | 
					$	WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
 | 
				
			||||||
$	EXIT
 | 
					$	EXIT
 | 
				
			||||||
$     ENDIF
 | 
					$     ENDIF
 | 
				
			||||||
$     IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
 | 
					$     IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
 | 
				
			||||||
@@ -703,7 +733,7 @@ $     DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define The Linker Options File Name.
 | 
					$!    Define The Linker Options File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
 | 
					$     OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End VAXC Check
 | 
					$!  End VAXC Check
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -730,7 +760,7 @@ $     CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define The Linker Options File Name.
 | 
					$!    Define The Linker Options File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
 | 
					$     OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End The GNU C Check.
 | 
					$!  End The GNU C Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* nseq.c */
 | 
					/* nseq.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project 1999.
 | 
					 * project 1999.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										214
									
								
								apps/ocsp.c
									
									
									
									
									
								
							
							
						
						
									
										214
									
								
								apps/ocsp.c
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* ocsp.c */
 | 
					/* ocsp.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project 2000.
 | 
					 * project 2000.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
@@ -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
 | 
				
			||||||
@@ -1231,4 +1210,137 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
 | 
				
			|||||||
	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,8 +8,9 @@
 | 
				
			|||||||
HOME			= .
 | 
					HOME			= .
 | 
				
			||||||
RANDFILE		= $ENV::HOME/.rnd
 | 
					RANDFILE		= $ENV::HOME/.rnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Uncomment out to enable OpenSSL configuration see config(3)
 | 
					# Extra OBJECT IDENTIFIER info:
 | 
				
			||||||
# openssl_conf = openssl_init
 | 
					#oid_file		= $ENV::HOME/.oid
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
@@ -18,22 +19,13 @@ RANDFILE		= $ENV::HOME/.rnd
 | 
				
			|||||||
# (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 any config aware application
 | 
					# We can add new OIDs in here for use by 'ca' and 'req'.
 | 
				
			||||||
# Add a simple OID like this:
 | 
					# Add a simple OID like this:
 | 
				
			||||||
# shortname=Long Object Identifier Name, 1.2.3.4
 | 
					# testoid1=1.2.3.4
 | 
				
			||||||
# Or use config file substitution like this:
 | 
					# Or use config file substitution like this:
 | 
				
			||||||
# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
 | 
					# testoid2=${testoid1}.5.6
 | 
				
			||||||
 | 
					 | 
				
			||||||
[ algs ]
 | 
					 | 
				
			||||||
# Algorithm configuration options. Currently just fips_mode
 | 
					 | 
				
			||||||
fips_mode = no
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
####################################################################
 | 
					####################################################################
 | 
				
			||||||
[ ca ]
 | 
					[ ca ]
 | 
				
			||||||
@@ -149,7 +141,7 @@ localityName			= Locality Name (eg, city)
 | 
				
			|||||||
organizationalUnitName		= Organizational Unit Name (eg, section)
 | 
					organizationalUnitName		= Organizational Unit Name (eg, section)
 | 
				
			||||||
#organizationalUnitName_default	=
 | 
					#organizationalUnitName_default	=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commonName			= Common Name (eg, YOUR name)
 | 
					commonName			= Common Name (e.g. server FQDN or YOUR name)
 | 
				
			||||||
commonName_max			= 64
 | 
					commonName_max			= 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
emailAddress			= Email Address
 | 
					emailAddress			= Email Address
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -235,16 +235,19 @@ int main(int Argc, char *Argv[])
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	in_FIPS_mode = 0;
 | 
						in_FIPS_mode = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef OPENSSL_FIPS
 | 
					 | 
				
			||||||
	if(getenv("OPENSSL_FIPS")) {
 | 
						if(getenv("OPENSSL_FIPS")) {
 | 
				
			||||||
 | 
					#ifdef OPENSSL_FIPS
 | 
				
			||||||
		if (!FIPS_mode_set(1)) {
 | 
							if (!FIPS_mode_set(1)) {
 | 
				
			||||||
			ERR_load_crypto_strings();
 | 
								ERR_load_crypto_strings();
 | 
				
			||||||
			ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
 | 
								ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
 | 
				
			||||||
			EXIT(1);
 | 
								EXIT(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		in_FIPS_mode = 1;
 | 
							in_FIPS_mode = 1;
 | 
				
			||||||
		}
 | 
					#else
 | 
				
			||||||
 | 
							fprintf(stderr, "FIPS mode not supported.\n");
 | 
				
			||||||
 | 
							EXIT(1);
 | 
				
			||||||
#endif
 | 
					#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)
 | 
				
			||||||
@@ -333,7 +336,8 @@ int main(int Argc, char *Argv[])
 | 
				
			|||||||
			else	prompt="OpenSSL> ";
 | 
								else	prompt="OpenSSL> ";
 | 
				
			||||||
			fputs(prompt,stdout);
 | 
								fputs(prompt,stdout);
 | 
				
			||||||
			fflush(stdout);
 | 
								fflush(stdout);
 | 
				
			||||||
			fgets(p,n,stdin);
 | 
								if (!fgets(p,n,stdin))
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
			if (p[0] == '\0') goto end;
 | 
								if (p[0] == '\0') goto end;
 | 
				
			||||||
			i=strlen(p);
 | 
								i=strlen(p);
 | 
				
			||||||
			if (i <= 1) break;
 | 
								if (i <= 1) break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,8 +8,9 @@
 | 
				
			|||||||
HOME			= .
 | 
					HOME			= .
 | 
				
			||||||
RANDFILE		= $ENV::HOME/.rnd
 | 
					RANDFILE		= $ENV::HOME/.rnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Uncomment out to enable OpenSSL configuration see config(3)
 | 
					# Extra OBJECT IDENTIFIER info:
 | 
				
			||||||
# openssl_conf = openssl_init
 | 
					#oid_file		= $ENV::HOME/.oid
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
@@ -18,22 +19,13 @@ RANDFILE		= $ENV::HOME/.rnd
 | 
				
			|||||||
# (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 any config aware application
 | 
					# We can add new OIDs in here for use by 'ca' and 'req'.
 | 
				
			||||||
# Add a simple OID like this:
 | 
					# Add a simple OID like this:
 | 
				
			||||||
# shortname=Long Object Identifier Name, 1.2.3.4
 | 
					# testoid1=1.2.3.4
 | 
				
			||||||
# Or use config file substitution like this:
 | 
					# Or use config file substitution like this:
 | 
				
			||||||
# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
 | 
					# testoid2=${testoid1}.5.6
 | 
				
			||||||
 | 
					 | 
				
			||||||
[ algs ]
 | 
					 | 
				
			||||||
# Algorithm configuration options. Currently just fips_mode
 | 
					 | 
				
			||||||
fips_mode = no
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
####################################################################
 | 
					####################################################################
 | 
				
			||||||
[ ca ]
 | 
					[ ca ]
 | 
				
			||||||
@@ -149,7 +141,7 @@ localityName			= Locality Name (eg, city)
 | 
				
			|||||||
organizationalUnitName		= Organizational Unit Name (eg, section)
 | 
					organizationalUnitName		= Organizational Unit Name (eg, section)
 | 
				
			||||||
#organizationalUnitName_default	=
 | 
					#organizationalUnitName_default	=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commonName			= Common Name (eg, YOUR name)
 | 
					commonName			= Common Name (e.g. server FQDN or YOUR name)
 | 
				
			||||||
commonName_max			= 64
 | 
					commonName_max			= 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
emailAddress			= Email Address
 | 
					emailAddress			= Email Address
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* pkcs12.c */
 | 
					/* pkcs12.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project.
 | 
					 * project.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
@@ -68,6 +68,12 @@
 | 
				
			|||||||
#include <openssl/pem.h>
 | 
					#include <openssl/pem.h>
 | 
				
			||||||
#include <openssl/pkcs12.h>
 | 
					#include <openssl/pkcs12.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_SYS_NETWARE
 | 
				
			||||||
 | 
					/* Rename these functions to avoid name clashes on NetWare OS */
 | 
				
			||||||
 | 
					#define uni2asc OPENSSL_uni2asc
 | 
				
			||||||
 | 
					#define asc2uni OPENSSL_asc2uni
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PROG pkcs12_main
 | 
					#define PROG pkcs12_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const EVP_CIPHER *enc;
 | 
					const EVP_CIPHER *enc;
 | 
				
			||||||
@@ -100,6 +106,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;
 | 
				
			||||||
@@ -231,7 +238,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;
 | 
				
			||||||
@@ -345,6 +354,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;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -484,7 +495,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;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@@ -569,7 +580,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();
 | 
				
			||||||
@@ -646,7 +659,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (!twopass) BUF_strlcpy(macpass, pass, sizeof macpass);
 | 
					    if (!twopass) BUF_strlcpy(macpass, pass, sizeof macpass);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (options & INFO) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
 | 
					    if ((options & INFO) && p12->mac) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
 | 
				
			||||||
    if(macver) {
 | 
					    if(macver) {
 | 
				
			||||||
#ifdef CRYPTO_MDEBUG
 | 
					#ifdef CRYPTO_MDEBUG
 | 
				
			||||||
    CRYPTO_push_info("verify MAC");
 | 
					    CRYPTO_push_info("verify MAC");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,9 +82,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	PKCS7 *p7=NULL;
 | 
						PKCS7 *p7=NULL;
 | 
				
			||||||
	int i,badops=0;
 | 
						int i,badops=0;
 | 
				
			||||||
	BIO *in=NULL,*out=NULL;
 | 
						BIO *in=NULL,*out=NULL;
 | 
				
			||||||
@@ -180,7 +177,7 @@ bad:
 | 
				
			|||||||
	ERR_load_crypto_strings();
 | 
						ERR_load_crypto_strings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	in=BIO_new(BIO_s_file());
 | 
						in=BIO_new(BIO_s_file());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* pkcs8.c */
 | 
					/* pkcs8.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project 1999-2004.
 | 
					 * project 1999-2004.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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; }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								apps/rand.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								apps/rand.c
									
									
									
									
									
								
							@@ -68,7 +68,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* -out file         - write to file
 | 
					/* -out file         - write to file
 | 
				
			||||||
 * -rand file:file   - PRNG seed files
 | 
					 * -rand file:file   - PRNG seed files
 | 
				
			||||||
 * -base64           - encode output
 | 
					 * -base64           - base64 encode output
 | 
				
			||||||
 | 
					 * -hex              - hex encode output
 | 
				
			||||||
 * num               - write 'num' bytes
 | 
					 * num               - write 'num' bytes
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,14 +77,12 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	int i, r, ret = 1;
 | 
						int i, r, ret = 1;
 | 
				
			||||||
	int badopt;
 | 
						int badopt;
 | 
				
			||||||
	char *outfile = NULL;
 | 
						char *outfile = NULL;
 | 
				
			||||||
	char *inrand = NULL;
 | 
						char *inrand = NULL;
 | 
				
			||||||
	int base64 = 0;
 | 
						int base64 = 0;
 | 
				
			||||||
 | 
						int hex = 0;
 | 
				
			||||||
	BIO *out = NULL;
 | 
						BIO *out = NULL;
 | 
				
			||||||
	int num = -1;
 | 
						int num = -1;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
@@ -133,6 +132,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			else
 | 
								else
 | 
				
			||||||
				badopt = 1;
 | 
									badopt = 1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (strcmp(argv[i], "-hex") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (!hex)
 | 
				
			||||||
 | 
									hex = 1;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									badopt = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if (isdigit((unsigned char)argv[i][0]))
 | 
							else if (isdigit((unsigned char)argv[i][0]))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (num < 0)
 | 
								if (num < 0)
 | 
				
			||||||
@@ -148,6 +154,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			badopt = 1;
 | 
								badopt = 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (hex && base64)
 | 
				
			||||||
 | 
							badopt = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (num < 0)
 | 
						if (num < 0)
 | 
				
			||||||
		badopt = 1;
 | 
							badopt = 1;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -160,12 +169,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		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, "-rand file%cfile%c... - seed PRNG from files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
							BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
 | 
				
			||||||
		BIO_printf(bio_err, "-base64               - encode output\n");
 | 
							BIO_printf(bio_err, "-base64               - base64 encode output\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err, "-hex                  - hex encode output\n");
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	app_RAND_load_file(NULL, bio_err, (inrand != NULL));
 | 
						app_RAND_load_file(NULL, bio_err, (inrand != NULL));
 | 
				
			||||||
@@ -210,9 +220,17 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		r = RAND_bytes(buf, chunk);
 | 
							r = RAND_bytes(buf, chunk);
 | 
				
			||||||
		if (r <= 0)
 | 
							if (r <= 0)
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
		BIO_write(out, buf, chunk);
 | 
							if (!hex) 
 | 
				
			||||||
 | 
								BIO_write(out, buf, chunk);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								for (i = 0; i < chunk; i++)
 | 
				
			||||||
 | 
									BIO_printf(out, "%02x", buf[i]);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		num -= chunk;
 | 
							num -= chunk;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						if (hex)
 | 
				
			||||||
 | 
							BIO_puts(out, "\n");
 | 
				
			||||||
	(void)BIO_flush(out);
 | 
						(void)BIO_flush(out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	app_RAND_write_file(NULL, bio_err);
 | 
						app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								apps/req.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								apps/req.c
									
									
									
									
									
								
							@@ -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)
 | 
				
			||||||
@@ -1434,11 +1433,17 @@ start2:			for (;;)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				BIO_snprintf(buf,sizeof buf,"%s_min",type);
 | 
									BIO_snprintf(buf,sizeof buf,"%s_min",type);
 | 
				
			||||||
				if (!NCONF_get_number(req_conf,attr_sect,buf, &n_min))
 | 
									if (!NCONF_get_number(req_conf,attr_sect,buf, &n_min))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										ERR_clear_error();
 | 
				
			||||||
					n_min = -1;
 | 
										n_min = -1;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				BIO_snprintf(buf,sizeof buf,"%s_max",type);
 | 
									BIO_snprintf(buf,sizeof buf,"%s_max",type);
 | 
				
			||||||
				if (!NCONF_get_number(req_conf,attr_sect,buf, &n_max))
 | 
									if (!NCONF_get_number(req_conf,attr_sect,buf, &n_max))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
										ERR_clear_error();
 | 
				
			||||||
					n_max = -1;
 | 
										n_max = -1;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (!add_attribute_object(req,
 | 
									if (!add_attribute_object(req,
 | 
				
			||||||
					v->value,def,value,nid,n_min,n_max, chtype))
 | 
										v->value,def,value,nid,n_min,n_max, chtype))
 | 
				
			||||||
@@ -1539,7 +1544,8 @@ start:
 | 
				
			|||||||
		buf[0]='\0';
 | 
							buf[0]='\0';
 | 
				
			||||||
		if (!batch)
 | 
							if (!batch)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			fgets(buf,sizeof buf,stdin);
 | 
								if (!fgets(buf,sizeof buf,stdin))
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -1597,7 +1603,8 @@ start:
 | 
				
			|||||||
		buf[0]='\0';
 | 
							buf[0]='\0';
 | 
				
			||||||
		if (!batch)
 | 
							if (!batch)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			fgets(buf,sizeof buf,stdin);
 | 
								if (!fgets(buf,sizeof buf,stdin))
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* rsautl.c */
 | 
					/* rsautl.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project 2000.
 | 
					 * project 2000.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
@@ -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,10 @@ 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MS_CALLBACK generate_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len);
 | 
				
			||||||
 | 
					int MS_CALLBACK verify_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int cookie_len);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										164
									
								
								apps/s_cb.c
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								apps/s_cb.c
									
									
									
									
									
								
							@@ -117,12 +117,17 @@
 | 
				
			|||||||
#undef NON_MAIN
 | 
					#undef NON_MAIN
 | 
				
			||||||
#undef USE_SOCKETS
 | 
					#undef USE_SOCKETS
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
 | 
					#include <openssl/rand.h>
 | 
				
			||||||
#include <openssl/x509.h>
 | 
					#include <openssl/x509.h>
 | 
				
			||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
#include "s_apps.h"
 | 
					#include "s_apps.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define	COOKIE_SECRET_LENGTH	16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int verify_depth=0;
 | 
					int verify_depth=0;
 | 
				
			||||||
int verify_error=X509_V_OK;
 | 
					int verify_error=X509_V_OK;
 | 
				
			||||||
 | 
					unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
 | 
				
			||||||
 | 
					int cookie_initialized=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
 | 
					int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -338,6 +343,12 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		str_version = "???";
 | 
							str_version = "???";
 | 
				
			||||||
 | 
						case DTLS1_VERSION:
 | 
				
			||||||
 | 
							str_version = "DTLS 1.0 ";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case DTLS1_BAD_VER:
 | 
				
			||||||
 | 
							str_version = "DTLS 1.0 (bad) ";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (version == SSL2_VERSION)
 | 
						if (version == SSL2_VERSION)
 | 
				
			||||||
@@ -401,7 +412,10 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (version == SSL3_VERSION || version == TLS1_VERSION)
 | 
						if (version == SSL3_VERSION ||
 | 
				
			||||||
 | 
						    version == TLS1_VERSION ||
 | 
				
			||||||
 | 
						    version == DTLS1_VERSION ||
 | 
				
			||||||
 | 
						    version == DTLS1_BAD_VER)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		switch (content_type)
 | 
							switch (content_type)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -540,6 +554,9 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
				case 15:
 | 
									case 15:
 | 
				
			||||||
					str_details1 = ", CertificateVerify";
 | 
										str_details1 = ", CertificateVerify";
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
 | 
									case 3:
 | 
				
			||||||
 | 
										str_details1 = ", HelloVerifyRequest";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
				case 16:
 | 
									case 16:
 | 
				
			||||||
					str_details1 = ", ClientKeyExchange";
 | 
										str_details1 = ", ClientKeyExchange";
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
@@ -575,3 +592,148 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	(void)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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_renegotiate:
 | 
				
			||||||
 | 
							extname = "renegotiate";
 | 
				
			||||||
 | 
							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);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MS_CALLBACK generate_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						unsigned char *buffer, result[EVP_MAX_MD_SIZE];
 | 
				
			||||||
 | 
						unsigned int length, resultlength;
 | 
				
			||||||
 | 
						struct sockaddr_in peer;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						/* Initialize a random secret */
 | 
				
			||||||
 | 
						if (!cookie_initialized)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"error setting random cookie secret\n");
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							cookie_initialized = 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Read peer information */
 | 
				
			||||||
 | 
						(void)BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Create buffer with peer's address and port */
 | 
				
			||||||
 | 
						length = sizeof(peer.sin_addr);
 | 
				
			||||||
 | 
						length += sizeof(peer.sin_port);
 | 
				
			||||||
 | 
						buffer = OPENSSL_malloc(length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (buffer == NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						memcpy(buffer, &peer.sin_addr, sizeof(peer.sin_addr));
 | 
				
			||||||
 | 
						memcpy(buffer + sizeof(peer.sin_addr), &peer.sin_port, sizeof(peer.sin_port));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Calculate HMAC of buffer using the secret */
 | 
				
			||||||
 | 
						HMAC(EVP_sha1(), cookie_secret, COOKIE_SECRET_LENGTH,
 | 
				
			||||||
 | 
						     buffer, length, result, &resultlength);
 | 
				
			||||||
 | 
						OPENSSL_free(buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memcpy(cookie, result, resultlength);
 | 
				
			||||||
 | 
						*cookie_len = resultlength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MS_CALLBACK verify_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						unsigned char *buffer, result[EVP_MAX_MD_SIZE];
 | 
				
			||||||
 | 
						unsigned int length, resultlength;
 | 
				
			||||||
 | 
						struct sockaddr_in peer;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						/* If secret isn't initialized yet, the cookie can't be valid */
 | 
				
			||||||
 | 
						if (!cookie_initialized)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Read peer information */
 | 
				
			||||||
 | 
						(void)BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Create buffer with peer's address and port */
 | 
				
			||||||
 | 
						length = sizeof(peer.sin_addr);
 | 
				
			||||||
 | 
						length += sizeof(peer.sin_port);
 | 
				
			||||||
 | 
						buffer = (unsigned char*) OPENSSL_malloc(length);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (buffer == NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						memcpy(buffer, &peer.sin_addr, sizeof(peer.sin_addr));
 | 
				
			||||||
 | 
						memcpy(buffer + sizeof(peer.sin_addr), &peer.sin_port, sizeof(peer.sin_port));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Calculate HMAC of buffer using the secret */
 | 
				
			||||||
 | 
						HMAC(EVP_sha1(), cookie_secret, COOKIE_SECRET_LENGTH,
 | 
				
			||||||
 | 
						     buffer, length, result, &resultlength);
 | 
				
			||||||
 | 
						OPENSSL_free(buffer);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (cookie_len == resultlength && memcmp(result, cookie, resultlength) == 0)
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										312
									
								
								apps/s_client.c
									
									
									
									
									
								
							
							
						
						
									
										312
									
								
								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;
 | 
				
			||||||
@@ -213,11 +221,12 @@ static void sc_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -crlf         - convert LF from terminal into CRLF\n");
 | 
						BIO_printf(bio_err," -crlf         - convert LF from terminal into CRLF\n");
 | 
				
			||||||
	BIO_printf(bio_err," -quiet        - no s_client output\n");
 | 
						BIO_printf(bio_err," -quiet        - no s_client output\n");
 | 
				
			||||||
	BIO_printf(bio_err," -ign_eof      - ignore input eof (default when -quiet)\n");
 | 
						BIO_printf(bio_err," -ign_eof      - ignore input eof (default when -quiet)\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -no_ign_eof   - don't ignore input eof\n");
 | 
				
			||||||
	BIO_printf(bio_err," -ssl2         - just use SSLv2\n");
 | 
						BIO_printf(bio_err," -ssl2         - just use SSLv2\n");
 | 
				
			||||||
	BIO_printf(bio_err," -ssl3         - just use SSLv3\n");
 | 
						BIO_printf(bio_err," -ssl3         - just use SSLv3\n");
 | 
				
			||||||
	BIO_printf(bio_err," -tls1         - just use TLSv1\n");
 | 
						BIO_printf(bio_err," -tls1         - just use TLSv1\n");
 | 
				
			||||||
	BIO_printf(bio_err," -dtls1        - just use DTLSv1\n");    
 | 
						BIO_printf(bio_err," -dtls1        - just use DTLSv1\n");    
 | 
				
			||||||
	BIO_printf(bio_err," -mtu          - set the MTU\n");
 | 
						BIO_printf(bio_err," -mtu          - set the link layer MTU\n");
 | 
				
			||||||
	BIO_printf(bio_err," -no_tls1/-no_ssl3/-no_ssl2 - turn off that protocol\n");
 | 
						BIO_printf(bio_err," -no_tls1/-no_ssl3/-no_ssl2 - turn off that protocol\n");
 | 
				
			||||||
	BIO_printf(bio_err," -bugs         - Switch on all SSL implementation bug workarounds\n");
 | 
						BIO_printf(bio_err," -bugs         - Switch on all SSL implementation bug workarounds\n");
 | 
				
			||||||
	BIO_printf(bio_err," -serverpref   - Use server's cipher preferences (only SSLv2)\n");
 | 
						BIO_printf(bio_err," -serverpref   - Use server's cipher preferences (only SSLv2)\n");
 | 
				
			||||||
@@ -226,28 +235,59 @@ static void sc_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -starttls prot - use the STARTTLS command before starting TLS\n");
 | 
						BIO_printf(bio_err," -starttls prot - use the STARTTLS command before starting TLS\n");
 | 
				
			||||||
	BIO_printf(bio_err,"                 for those protocols that support it, where\n");
 | 
						BIO_printf(bio_err,"                 for those protocols that support it, where\n");
 | 
				
			||||||
	BIO_printf(bio_err,"                 'prot' defines which one to assume.  Currently,\n");
 | 
						BIO_printf(bio_err,"                 'prot' defines which one to assume.  Currently,\n");
 | 
				
			||||||
	BIO_printf(bio_err,"                 only \"smtp\", \"pop3\", \"imap\", and \"ftp\" are supported.\n");
 | 
						BIO_printf(bio_err,"                 only \"smtp\", \"pop3\", \"imap\", \"ftp\" and \"xmpp\"\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err,"                 are supported.\n");
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	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
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#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,
 | 
				
			||||||
	PROTO_SMTP,
 | 
						PROTO_SMTP,
 | 
				
			||||||
	PROTO_POP3,
 | 
						PROTO_POP3,
 | 
				
			||||||
	PROTO_IMAP,
 | 
						PROTO_IMAP,
 | 
				
			||||||
	PROTO_FTP
 | 
						PROTO_FTP,
 | 
				
			||||||
 | 
						PROTO_XMPP
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int, char **);
 | 
					int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int off=0;
 | 
						int off=0, clr = 0;
 | 
				
			||||||
	SSL *con=NULL,*con2=NULL;
 | 
						SSL *con=NULL,*con2=NULL;
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
						X509_STORE *store = NULL;
 | 
				
			||||||
	int s,k,width,state=0;
 | 
						int s,k,width,state=0;
 | 
				
			||||||
@@ -279,27 +319,34 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	BIO *sbio;
 | 
						BIO *sbio;
 | 
				
			||||||
	char *inrand=NULL;
 | 
						char *inrand=NULL;
 | 
				
			||||||
	int mbuf_len=0;
 | 
						int mbuf_len=0;
 | 
				
			||||||
 | 
						struct timeval timeout, *timeoutp;
 | 
				
			||||||
#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 *ssl_client_engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						ENGINE *e=NULL;
 | 
				
			||||||
#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 ;
 | 
				
			||||||
	long mtu = 0;
 | 
						long socket_mtu = 0;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
						char *jpake_secret = NULL;
 | 
				
			||||||
	meth=SSLv23_client_method();
 | 
					 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL3)
 | 
					 | 
				
			||||||
	meth=SSLv3_client_method();
 | 
					 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL2)
 | 
					 | 
				
			||||||
	meth=SSLv2_client_method();
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						meth=SSLv23_client_method();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
	c_Pause=0;
 | 
						c_Pause=0;
 | 
				
			||||||
	c_quiet=0;
 | 
						c_quiet=0;
 | 
				
			||||||
@@ -361,6 +408,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;
 | 
				
			||||||
@@ -381,10 +438,18 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		else if	(strcmp(*argv,"-ign_eof") == 0)
 | 
							else if	(strcmp(*argv,"-ign_eof") == 0)
 | 
				
			||||||
			c_ign_eof=1;
 | 
								c_ign_eof=1;
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-no_ign_eof") == 0)
 | 
				
			||||||
 | 
								c_ign_eof=0;
 | 
				
			||||||
		else if	(strcmp(*argv,"-pause") == 0)
 | 
							else if	(strcmp(*argv,"-pause") == 0)
 | 
				
			||||||
			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();
 | 
				
			||||||
@@ -420,7 +485,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-mtu") == 0)
 | 
							else if (strcmp(*argv,"-mtu") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			mtu = atol(*(++argv));
 | 
								socket_mtu = atol(*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		else if (strcmp(*argv,"-bugs") == 0)
 | 
							else if (strcmp(*argv,"-bugs") == 0)
 | 
				
			||||||
@@ -460,8 +525,18 @@ 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,"-legacy_renegotiation") == 0)
 | 
				
			||||||
 | 
								off|=SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-legacy_server_connect") == 0)
 | 
				
			||||||
 | 
								{ off|=SSL_OP_LEGACY_SERVER_CONNECT; }
 | 
				
			||||||
 | 
							else if	(strcmp(*argv,"-no_legacy_server_connect") == 0)
 | 
				
			||||||
 | 
								{ clr|=SSL_OP_LEGACY_SERVER_CONNECT; }
 | 
				
			||||||
		else if	(strcmp(*argv,"-cipher") == 0)
 | 
							else if	(strcmp(*argv,"-cipher") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
@@ -483,6 +558,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				starttls_proto = PROTO_IMAP;
 | 
									starttls_proto = PROTO_IMAP;
 | 
				
			||||||
			else if (strcmp(*argv,"ftp") == 0)
 | 
								else if (strcmp(*argv,"ftp") == 0)
 | 
				
			||||||
				starttls_proto = PROTO_FTP;
 | 
									starttls_proto = PROTO_FTP;
 | 
				
			||||||
 | 
								else if (strcmp(*argv, "xmpp") == 0)
 | 
				
			||||||
 | 
									starttls_proto = PROTO_XMPP;
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				goto bad;
 | 
									goto bad;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -492,12 +569,32 @@ 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
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-jpake") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								jpake_secret = *++argv;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
								BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
				
			||||||
@@ -519,6 +616,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,10 +693,27 @@ 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
 | 
				
			||||||
		SSL_CTX_set_options(ctx,off);
 | 
							SSL_CTX_set_options(ctx,off);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (clr)
 | 
				
			||||||
 | 
							SSL_CTX_clear_options(ctx, clr);
 | 
				
			||||||
	/* 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.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@@ -621,8 +745,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)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -657,7 +824,6 @@ re_start:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if ( SSL_version(con) == DTLS1_VERSION)
 | 
						if ( SSL_version(con) == DTLS1_VERSION)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		struct timeval timeout;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		sbio=BIO_new_dgram(s,BIO_NOCLOSE);
 | 
							sbio=BIO_new_dgram(s,BIO_NOCLOSE);
 | 
				
			||||||
		if (getsockname(s, &peer, (void *)&peerlen) < 0)
 | 
							if (getsockname(s, &peer, (void *)&peerlen) < 0)
 | 
				
			||||||
@@ -681,10 +847,10 @@ re_start:
 | 
				
			|||||||
			BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
 | 
								BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ( mtu > 0)
 | 
							if (socket_mtu > 28)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
 | 
								SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
 | 
				
			||||||
			SSL_set_mtu(con, mtu);
 | 
								SSL_set_mtu(con, socket_mtu - 28);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			/* want to do MTU discovery */
 | 
								/* want to do MTU discovery */
 | 
				
			||||||
@@ -693,8 +859,6 @@ re_start:
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		sbio=BIO_new_socket(s,BIO_NOCLOSE);
 | 
							sbio=BIO_new_socket(s,BIO_NOCLOSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (nbio_test)
 | 
						if (nbio_test)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO *test;
 | 
							BIO *test;
 | 
				
			||||||
@@ -714,6 +878,34 @@ 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
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
						if (jpake_secret)
 | 
				
			||||||
 | 
							jpake_client_auth(bio_c_out, sbio, jpake_secret);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SSL_set_bio(con,sbio,sbio);
 | 
						SSL_set_bio(con,sbio,sbio);
 | 
				
			||||||
	SSL_set_connect_state(con);
 | 
						SSL_set_connect_state(con);
 | 
				
			||||||
@@ -820,12 +1012,40 @@ re_start:
 | 
				
			|||||||
		BIO_printf(sbio,"AUTH TLS\r\n");
 | 
							BIO_printf(sbio,"AUTH TLS\r\n");
 | 
				
			||||||
		BIO_read(sbio,sbuf,BUFSIZZ);
 | 
							BIO_read(sbio,sbuf,BUFSIZZ);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						if (starttls_proto == PROTO_XMPP)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							int seen = 0;
 | 
				
			||||||
 | 
							BIO_printf(sbio,"<stream:stream "
 | 
				
			||||||
 | 
							    "xmlns:stream='http://etherx.jabber.org/streams' "
 | 
				
			||||||
 | 
							    "xmlns='jabber:client' to='%s' version='1.0'>", host);
 | 
				
			||||||
 | 
							seen = BIO_read(sbio,mbuf,BUFSIZZ);
 | 
				
			||||||
 | 
							mbuf[seen] = 0;
 | 
				
			||||||
 | 
							while (!strstr(mbuf, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'"))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (strstr(mbuf, "/stream:features>"))
 | 
				
			||||||
 | 
									goto shut;
 | 
				
			||||||
 | 
								seen = BIO_read(sbio,mbuf,BUFSIZZ);
 | 
				
			||||||
 | 
								mbuf[seen] = 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							BIO_printf(sbio, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
 | 
				
			||||||
 | 
							seen = BIO_read(sbio,sbuf,BUFSIZZ);
 | 
				
			||||||
 | 
							sbuf[seen] = 0;
 | 
				
			||||||
 | 
							if (!strstr(sbuf, "<proceed"))
 | 
				
			||||||
 | 
								goto shut;
 | 
				
			||||||
 | 
							mbuf[0] = 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		FD_ZERO(&readfds);
 | 
							FD_ZERO(&readfds);
 | 
				
			||||||
		FD_ZERO(&writefds);
 | 
							FD_ZERO(&writefds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ((SSL_version(con) == DTLS1_VERSION) &&
 | 
				
			||||||
 | 
								DTLSv1_get_timeout(con, &timeout))
 | 
				
			||||||
 | 
								timeoutp = &timeout;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								timeoutp = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (SSL_in_init(con) && !SSL_total_renegotiations(con))
 | 
							if (SSL_in_init(con) && !SSL_total_renegotiations(con))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			in_init=1;
 | 
								in_init=1;
 | 
				
			||||||
@@ -837,6 +1057,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--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -911,7 +1142,7 @@ re_start:
 | 
				
			|||||||
					if(!i && (!((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0))) || !read_tty) ) continue;
 | 
										if(!i && (!((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0))) || !read_tty) ) continue;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
				} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
									} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
				
			||||||
					 NULL,NULL);
 | 
										 NULL,timeoutp);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#elif defined(OPENSSL_SYS_NETWARE)
 | 
					#elif defined(OPENSSL_SYS_NETWARE)
 | 
				
			||||||
			if(!write_tty) {
 | 
								if(!write_tty) {
 | 
				
			||||||
@@ -921,11 +1152,11 @@ re_start:
 | 
				
			|||||||
					i=select(width,(void *)&readfds,(void *)&writefds,
 | 
										i=select(width,(void *)&readfds,(void *)&writefds,
 | 
				
			||||||
						NULL,&tv);
 | 
											NULL,&tv);
 | 
				
			||||||
				} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
									} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
				
			||||||
					NULL,NULL);
 | 
										NULL,timeoutp);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
			i=select(width,(void *)&readfds,(void *)&writefds,
 | 
								i=select(width,(void *)&readfds,(void *)&writefds,
 | 
				
			||||||
				 NULL,NULL);
 | 
									 NULL,timeoutp);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
			if ( i < 0)
 | 
								if ( i < 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -936,6 +1167,11 @@ re_start:
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ((SSL_version(con) == DTLS1_VERSION) && DTLSv1_handle_timeout(con) > 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"TIMEOUT occured\n");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!ssl_pending && FD_ISSET(SSL_get_fd(con),&writefds))
 | 
							if (!ssl_pending && FD_ISSET(SSL_get_fd(con),&writefds))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			k=SSL_write(con,&(cbuf[cbuf_off]),
 | 
								k=SSL_write(con,&(cbuf[cbuf_off]),
 | 
				
			||||||
@@ -1290,6 +1526,8 @@ static void print_stuff(BIO *bio, SSL *s, int full)
 | 
				
			|||||||
							 EVP_PKEY_bits(pktmp));
 | 
												 EVP_PKEY_bits(pktmp));
 | 
				
			||||||
		EVP_PKEY_free(pktmp);
 | 
							EVP_PKEY_free(pktmp);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						BIO_printf(bio, "Secure Renegotiation IS%s supported\n",
 | 
				
			||||||
 | 
								SSL_get_secure_renegotiation_support(s) ? "" : " NOT");
 | 
				
			||||||
#ifndef OPENSSL_NO_COMP
 | 
					#ifndef OPENSSL_NO_COMP
 | 
				
			||||||
	comp=SSL_get_current_compression(s);
 | 
						comp=SSL_get_current_compression(s);
 | 
				
			||||||
	expansion=SSL_get_current_expansion(s);
 | 
						expansion=SSL_get_current_expansion(s);
 | 
				
			||||||
@@ -1306,3 +1544,31 @@ static void print_stuff(BIO *bio, SSL *s, int full)
 | 
				
			|||||||
	(void)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 */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										578
									
								
								apps/s_server.c
									
									
									
									
									
								
							
							
						
						
									
										578
									
								
								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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -268,11 +283,10 @@ static char *engine_id=NULL;
 | 
				
			|||||||
static const char *session_id_prefix=NULL;
 | 
					static const char *session_id_prefix=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int enable_timeouts = 0;
 | 
					static int enable_timeouts = 0;
 | 
				
			||||||
#ifdef mtu
 | 
					static long socket_mtu;
 | 
				
			||||||
#undef mtu
 | 
					#ifndef OPENSSL_NO_DTLS1
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
static long mtu;
 | 
					 | 
				
			||||||
static int cert_chain = 0;
 | 
					static int cert_chain = 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef MONOLITH
 | 
					#ifdef MONOLITH
 | 
				
			||||||
@@ -285,6 +299,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 +332,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);
 | 
				
			||||||
@@ -350,7 +374,7 @@ static void sv_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -tls1         - Just talk TLSv1\n");
 | 
						BIO_printf(bio_err," -tls1         - Just talk TLSv1\n");
 | 
				
			||||||
	BIO_printf(bio_err," -dtls1        - Just talk DTLSv1\n");
 | 
						BIO_printf(bio_err," -dtls1        - Just talk DTLSv1\n");
 | 
				
			||||||
	BIO_printf(bio_err," -timeout      - Enable timeouts\n");
 | 
						BIO_printf(bio_err," -timeout      - Enable timeouts\n");
 | 
				
			||||||
	BIO_printf(bio_err," -mtu          - Set MTU\n");
 | 
						BIO_printf(bio_err," -mtu          - Set link layer MTU\n");
 | 
				
			||||||
	BIO_printf(bio_err," -chain        - Read a certificate chain\n");
 | 
						BIO_printf(bio_err," -chain        - Read a certificate chain\n");
 | 
				
			||||||
	BIO_printf(bio_err," -no_ssl2      - Just disable SSLv2\n");
 | 
						BIO_printf(bio_err," -no_ssl2      - Just disable SSLv2\n");
 | 
				
			||||||
	BIO_printf(bio_err," -no_ssl3      - Just disable SSLv3\n");
 | 
						BIO_printf(bio_err," -no_ssl3      - Just disable SSLv3\n");
 | 
				
			||||||
@@ -371,6 +395,17 @@ 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");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int local_argc=0;
 | 
					static int local_argc=0;
 | 
				
			||||||
@@ -526,8 +561,191 @@ 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 **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
					static char *jpake_secret = NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char *argv[])
 | 
					int MAIN(int argc, char *argv[])
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
						X509_STORE *store = NULL;
 | 
				
			||||||
@@ -545,13 +763,8 @@ 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
 | 
					 | 
				
			||||||
	ENGINE *e=NULL;
 | 
						ENGINE *e=NULL;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	char *inrand=NULL;
 | 
						char *inrand=NULL;
 | 
				
			||||||
	int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM;
 | 
						int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM;
 | 
				
			||||||
	char *passarg = NULL, *pass = NULL;
 | 
						char *passarg = NULL, *pass = NULL;
 | 
				
			||||||
@@ -559,14 +772,16 @@ 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;
 | 
				
			||||||
 | 
						int no_cache = 0;
 | 
				
			||||||
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	meth=SSLv23_server_method();
 | 
						EVP_PKEY *s_key2 = NULL;
 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL3)
 | 
						X509 *s_cert2 = NULL;
 | 
				
			||||||
	meth=SSLv3_server_method();
 | 
					 | 
				
			||||||
#elif !defined(OPENSSL_NO_SSL2)
 | 
					 | 
				
			||||||
	meth=SSLv2_server_method();
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
					        tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						meth=SSLv23_server_method();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local_argc=argc;
 | 
						local_argc=argc;
 | 
				
			||||||
	local_argv=argv;
 | 
						local_argv=argv;
 | 
				
			||||||
@@ -691,16 +906,20 @@ int MAIN(int argc, char *argv[])
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			CApath= *(++argv);
 | 
								CApath= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-no_cache") == 0)
 | 
				
			||||||
 | 
								no_cache = 1;
 | 
				
			||||||
		else if (strcmp(*argv,"-crl_check") == 0)
 | 
							else if (strcmp(*argv,"-crl_check") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			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;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		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,"-legacy_renegotiation") == 0)
 | 
				
			||||||
 | 
								off|=SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
 | 
				
			||||||
		else if	(strcmp(*argv,"-cipher") == 0)
 | 
							else if	(strcmp(*argv,"-cipher") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
@@ -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,14 +1024,14 @@ 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;
 | 
				
			||||||
		else if (strcmp(*argv,"-mtu") == 0)
 | 
							else if (strcmp(*argv,"-mtu") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			mtu = atol(*(++argv));
 | 
								socket_mtu = atol(*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv, "-chain") == 0)
 | 
							else if (strcmp(*argv, "-chain") == 0)
 | 
				
			||||||
			cert_chain = 1;
 | 
								cert_chain = 1;
 | 
				
			||||||
@@ -799,6 +1053,33 @@ 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
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-jpake") == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
 | 
								jpake_secret = *(++argv);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
								BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
				
			||||||
@@ -831,6 +1112,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 +1135,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 +1214,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,11 +1249,13 @@ 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);
 | 
				
			||||||
 | 
						if (no_cache)
 | 
				
			||||||
	SSL_CTX_sess_set_cache_size(ctx,128);
 | 
							SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							SSL_CTX_sess_set_cache_size(ctx,128);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
	if (cipher == NULL) cipher=getenv("SSL_CIPHER");
 | 
						if (cipher == NULL) cipher=getenv("SSL_CIPHER");
 | 
				
			||||||
@@ -966,6 +1278,65 @@ 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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (no_cache)
 | 
				
			||||||
 | 
								SSL_CTX_set_session_cache_mode(ctx2,SSL_SESS_CACHE_OFF);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								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 +1360,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 +1423,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 +1446,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 +1468,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 +1489,50 @@ 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)
 | 
						/* Set DTLS cookie generation and verification callbacks */
 | 
				
			||||||
	    SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
 | 
						SSL_CTX_set_cookie_generate_cb(ctx, generate_cookie_callback);
 | 
				
			||||||
 | 
						SSL_CTX_set_cookie_verify_cb(ctx, verify_cookie_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						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 +1549,19 @@ end:
 | 
				
			|||||||
		OPENSSL_free(pass);
 | 
							OPENSSL_free(pass);
 | 
				
			||||||
	if (dpass)
 | 
						if (dpass)
 | 
				
			||||||
		OPENSSL_free(dpass);
 | 
							OPENSSL_free(dpass);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
 | 
						if (tlscstatp.host)
 | 
				
			||||||
 | 
							OPENSSL_free(tlscstatp.host);
 | 
				
			||||||
 | 
						if (tlscstatp.port)
 | 
				
			||||||
 | 
							OPENSSL_free(tlscstatp.port);
 | 
				
			||||||
 | 
						if (tlscstatp.path)
 | 
				
			||||||
 | 
							OPENSSL_free(tlscstatp.path);
 | 
				
			||||||
 | 
						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);
 | 
				
			||||||
@@ -1148,8 +1605,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
	unsigned long l;
 | 
						unsigned long l;
 | 
				
			||||||
	SSL *con=NULL;
 | 
						SSL *con=NULL;
 | 
				
			||||||
	BIO *sbio;
 | 
						BIO *sbio;
 | 
				
			||||||
 | 
						struct timeval timeout;
 | 
				
			||||||
#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;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						struct timeval *timeoutp;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((buf=OPENSSL_malloc(bufsize)) == NULL)
 | 
						if ((buf=OPENSSL_malloc(bufsize)) == NULL)
 | 
				
			||||||
@@ -1171,6 +1631,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)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -1188,7 +1661,6 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (SSL_version(con) == DTLS1_VERSION)
 | 
						if (SSL_version(con) == DTLS1_VERSION)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		struct timeval timeout;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		sbio=BIO_new_dgram(s,BIO_NOCLOSE);
 | 
							sbio=BIO_new_dgram(s,BIO_NOCLOSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1204,10 +1676,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if ( mtu > 0)
 | 
							if (socket_mtu > 28)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
 | 
								SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
 | 
				
			||||||
			SSL_set_mtu(con, mtu);
 | 
								SSL_set_mtu(con, socket_mtu - 28);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			/* want to do MTU discovery */
 | 
								/* want to do MTU discovery */
 | 
				
			||||||
@@ -1226,6 +1698,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
		test=BIO_new(BIO_f_nbio_test());
 | 
							test=BIO_new(BIO_f_nbio_test());
 | 
				
			||||||
		sbio=BIO_push(test,sbio);
 | 
							sbio=BIO_push(test,sbio);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_JPAKE
 | 
				
			||||||
 | 
						if(jpake_secret)
 | 
				
			||||||
 | 
							jpake_server_auth(bio_s_out, sbio, jpake_secret);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SSL_set_bio(con,sbio,sbio);
 | 
						SSL_set_bio(con,sbio,sbio);
 | 
				
			||||||
	SSL_set_accept_state(con);
 | 
						SSL_set_accept_state(con);
 | 
				
			||||||
	/* SSL_set_fd(con,s); */
 | 
						/* SSL_set_fd(con,s); */
 | 
				
			||||||
@@ -1241,6 +1718,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 (;;)
 | 
				
			||||||
@@ -1277,7 +1761,19 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
			if(_kbhit())
 | 
								if(_kbhit())
 | 
				
			||||||
				read_from_terminal = 1;
 | 
									read_from_terminal = 1;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
			i=select(width,(void *)&readfds,NULL,NULL,NULL);
 | 
								if ((SSL_version(con) == DTLS1_VERSION) &&
 | 
				
			||||||
 | 
									DTLSv1_get_timeout(con, &timeout))
 | 
				
			||||||
 | 
									timeoutp = &timeout;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									timeoutp = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								i=select(width,(void *)&readfds,NULL,NULL,timeoutp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ((SSL_version(con) == DTLS1_VERSION) && DTLSv1_handle_timeout(con) > 0)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(bio_err,"TIMEOUT occured\n");
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (i <= 0) continue;
 | 
								if (i <= 0) continue;
 | 
				
			||||||
			if (FD_ISSET(fileno(stdin),&readfds))
 | 
								if (FD_ISSET(fileno(stdin),&readfds))
 | 
				
			||||||
				read_from_terminal = 1;
 | 
									read_from_terminal = 1;
 | 
				
			||||||
@@ -1534,6 +2030,8 @@ static int init_ssl_connection(SSL *con)
 | 
				
			|||||||
			con->kssl_ctx->client_princ);
 | 
								con->kssl_ctx->client_princ);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif /* OPENSSL_NO_KRB5 */
 | 
					#endif /* OPENSSL_NO_KRB5 */
 | 
				
			||||||
 | 
						BIO_printf(bio_s_out, "Secure Renegotiation IS%s supported\n",
 | 
				
			||||||
 | 
							      SSL_get_secure_renegotiation_support(con) ? "" : " NOT");
 | 
				
			||||||
	return(1);
 | 
						return(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1577,12 +2075,14 @@ static int www_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	char *buf=NULL;
 | 
						char *buf=NULL;
 | 
				
			||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	int i,j,k,blank,dot;
 | 
						int i,j,k,dot;
 | 
				
			||||||
	struct stat st_buf;
 | 
						struct stat st_buf;
 | 
				
			||||||
	SSL *con;
 | 
						SSL *con;
 | 
				
			||||||
	SSL_CIPHER *c;
 | 
						SSL_CIPHER *c;
 | 
				
			||||||
	BIO *io,*ssl_bio,*sbio;
 | 
						BIO *io,*ssl_bio,*sbio;
 | 
				
			||||||
 | 
					#ifdef RENEG
 | 
				
			||||||
	long total_bytes;
 | 
						long total_bytes;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buf=OPENSSL_malloc(bufsize);
 | 
						buf=OPENSSL_malloc(bufsize);
 | 
				
			||||||
	if (buf == NULL) return(0);
 | 
						if (buf == NULL) return(0);
 | 
				
			||||||
@@ -1606,6 +2106,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)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1646,7 +2153,6 @@ static int www_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
		SSL_set_msg_callback_arg(con, bio_s_out);
 | 
							SSL_set_msg_callback_arg(con, bio_s_out);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	blank=0;
 | 
					 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (hack)
 | 
							if (hack)
 | 
				
			||||||
@@ -1883,7 +2389,9 @@ static int www_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
                                        BIO_puts(io,"HTTP/1.0 200 ok\r\nContent-type: text/plain\r\n\r\n");
 | 
					                                        BIO_puts(io,"HTTP/1.0 200 ok\r\nContent-type: text/plain\r\n\r\n");
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
			/* send the file */
 | 
								/* send the file */
 | 
				
			||||||
 | 
					#ifdef RENEG
 | 
				
			||||||
			total_bytes=0;
 | 
								total_bytes=0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
			for (;;)
 | 
								for (;;)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				i=BIO_read(file,buf,bufsize);
 | 
									i=BIO_read(file,buf,bufsize);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,6 +62,12 @@
 | 
				
			|||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
#include <signal.h>
 | 
					#include <signal.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef FLAT_INC
 | 
				
			||||||
 | 
					#include "e_os2.h"
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#include "../e_os2.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* With IPv6, it looks like Digital has mixed up the proper order of
 | 
					/* With IPv6, it looks like Digital has mixed up the proper order of
 | 
				
			||||||
   recursive header file inclusion, resulting in the compiler complaining
 | 
					   recursive header file inclusion, resulting in the compiler complaining
 | 
				
			||||||
   that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
 | 
					   that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
 | 
				
			||||||
@@ -323,7 +329,7 @@ static int init_server_long(int *sock, int port, char *ip, int type)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	int ret=0;
 | 
						int ret=0;
 | 
				
			||||||
	struct sockaddr_in server;
 | 
						struct sockaddr_in server;
 | 
				
			||||||
	int s= -1,i;
 | 
						int s= -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!ssl_sock_init()) return(0);
 | 
						if (!ssl_sock_init()) return(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -362,7 +368,6 @@ static int init_server_long(int *sock, int port, char *ip, int type)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	/* Make it 128 for linux */
 | 
						/* Make it 128 for linux */
 | 
				
			||||||
	if (type==SOCK_STREAM && listen(s,128) == -1) goto err;
 | 
						if (type==SOCK_STREAM && listen(s,128) == -1) goto err;
 | 
				
			||||||
	i=0;
 | 
					 | 
				
			||||||
	*sock=s;
 | 
						*sock=s;
 | 
				
			||||||
	ret=1;
 | 
						ret=1;
 | 
				
			||||||
err:
 | 
					err:
 | 
				
			||||||
@@ -380,7 +385,7 @@ static int init_server(int *sock, int port, int type)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static int do_accept(int acc_sock, int *sock, char **host)
 | 
					static int do_accept(int acc_sock, int *sock, char **host)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int ret,i;
 | 
						int ret;
 | 
				
			||||||
	struct hostent *h1,*h2;
 | 
						struct hostent *h1,*h2;
 | 
				
			||||||
	static struct sockaddr_in from;
 | 
						static struct sockaddr_in from;
 | 
				
			||||||
	int len;
 | 
						int len;
 | 
				
			||||||
@@ -403,6 +408,7 @@ redoit:
 | 
				
			|||||||
	if (ret == INVALID_SOCKET)
 | 
						if (ret == INVALID_SOCKET)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK))
 | 
					#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK))
 | 
				
			||||||
 | 
							int i;
 | 
				
			||||||
		i=WSAGetLastError();
 | 
							i=WSAGetLastError();
 | 
				
			||||||
		BIO_printf(bio_err,"accept error %d\n",i);
 | 
							BIO_printf(bio_err,"accept error %d\n",i);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@@ -457,7 +463,6 @@ redoit:
 | 
				
			|||||||
			BIO_printf(bio_err,"gethostbyname failure\n");
 | 
								BIO_printf(bio_err,"gethostbyname failure\n");
 | 
				
			||||||
			return(0);
 | 
								return(0);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		i=0;
 | 
					 | 
				
			||||||
		if (h2->h_addrtype != AF_INET)
 | 
							if (h2->h_addrtype != AF_INET)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n");
 | 
								BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* smime.c */
 | 
					/* smime.c */
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project.
 | 
					 * project.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										50
									
								
								apps/speed.c
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								apps/speed.c
									
									
									
									
									
								
							@@ -254,8 +254,18 @@
 | 
				
			|||||||
# endif
 | 
					# endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_VXWORKS)
 | 
					#ifndef HAVE_FORK
 | 
				
			||||||
# define HAVE_FORK 1
 | 
					# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE)
 | 
				
			||||||
 | 
					#  define HAVE_FORK 0
 | 
				
			||||||
 | 
					# else
 | 
				
			||||||
 | 
					#  define HAVE_FORK 1
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if HAVE_FORK
 | 
				
			||||||
 | 
					# undef NO_FORK
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# define NO_FORK
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef BUFSIZE
 | 
					#undef BUFSIZE
 | 
				
			||||||
@@ -271,7 +281,7 @@ static void print_message(const char *s,long num,int length);
 | 
				
			|||||||
static void pkey_print_message(const char *str, const char *str2,
 | 
					static void pkey_print_message(const char *str, const char *str2,
 | 
				
			||||||
	long num, int bits, int sec);
 | 
						long num, int bits, int sec);
 | 
				
			||||||
static void print_result(int alg,int run_no,int count,double time_used);
 | 
					static void print_result(int alg,int run_no,int count,double time_used);
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
static int do_multi(int multi);
 | 
					static int do_multi(int multi);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -293,8 +303,12 @@ static const char *names[ALGOR_NUM]={
 | 
				
			|||||||
  "aes-128 ige","aes-192 ige","aes-256 ige"};
 | 
					  "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};
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
static double rsa_results[RSA_NUM][2];
 | 
					static double rsa_results[RSA_NUM][2];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_DSA
 | 
				
			||||||
static double dsa_results[DSA_NUM][2];
 | 
					static double dsa_results[DSA_NUM][2];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_ECDSA
 | 
					#ifndef OPENSSL_NO_ECDSA
 | 
				
			||||||
static double ecdsa_results[EC_NUM][2];
 | 
					static double ecdsa_results[EC_NUM][2];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -486,9 +500,6 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	unsigned char *buf=NULL,*buf2=NULL;
 | 
						unsigned char *buf=NULL,*buf2=NULL;
 | 
				
			||||||
	int mret=1;
 | 
						int mret=1;
 | 
				
			||||||
	long count=0,save_count=0;
 | 
						long count=0,save_count=0;
 | 
				
			||||||
@@ -577,9 +588,8 @@ 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;
 | 
					 | 
				
			||||||
	static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
 | 
						static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
 | 
				
			||||||
	static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
 | 
						static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
 | 
				
			||||||
	static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
 | 
						static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
 | 
				
			||||||
@@ -749,7 +759,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	const EVP_CIPHER *evp_cipher=NULL;
 | 
						const EVP_CIPHER *evp_cipher=NULL;
 | 
				
			||||||
	const EVP_MD *evp_md=NULL;
 | 
						const EVP_MD *evp_md=NULL;
 | 
				
			||||||
	int decrypt=0;
 | 
						int decrypt=0;
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
	int multi=0;
 | 
						int multi=0;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -792,9 +802,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf(bio_err,"out of memory\n");
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#ifndef OPENSSL_NO_DES
 | 
					 | 
				
			||||||
	buf_as_des_cblock = (DES_cblock *)buf;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
 | 
						if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"out of memory\n");
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
@@ -869,7 +876,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				BIO_printf(bio_err,"no engine given\n");
 | 
									BIO_printf(bio_err,"no engine given\n");
 | 
				
			||||||
				goto end;
 | 
									goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
                        e = setup_engine(bio_err, *argv, 0);
 | 
					                        setup_engine(bio_err, *argv, 0);
 | 
				
			||||||
			/* j will be increased again further down.  We just
 | 
								/* j will be increased again further down.  We just
 | 
				
			||||||
			   don't want speed to confuse an engine with an
 | 
								   don't want speed to confuse an engine with an
 | 
				
			||||||
			   algorithm, especially when none is given (which
 | 
								   algorithm, especially when none is given (which
 | 
				
			||||||
@@ -877,7 +884,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			j--;
 | 
								j--;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
		else if	((argc > 0) && (strcmp(*argv,"-multi") == 0))
 | 
							else if	((argc > 0) && (strcmp(*argv,"-multi") == 0))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			argc--;
 | 
								argc--;
 | 
				
			||||||
@@ -1257,7 +1264,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			BIO_printf(bio_err,"-evp e          use EVP e.\n");
 | 
								BIO_printf(bio_err,"-evp e          use EVP e.\n");
 | 
				
			||||||
			BIO_printf(bio_err,"-decrypt        time decryption instead of encryption (only EVP).\n");
 | 
								BIO_printf(bio_err,"-decrypt        time decryption instead of encryption (only EVP).\n");
 | 
				
			||||||
			BIO_printf(bio_err,"-mr             produce machine readable output.\n");
 | 
								BIO_printf(bio_err,"-mr             produce machine readable output.\n");
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
			BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n");
 | 
								BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
@@ -1267,7 +1274,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		j++;
 | 
							j++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
	if(multi && do_multi(multi))
 | 
						if(multi && do_multi(multi))
 | 
				
			||||||
		goto show_res;
 | 
							goto show_res;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1374,7 +1381,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		count*=2;
 | 
							count*=2;
 | 
				
			||||||
		Time_F(START);
 | 
							Time_F(START);
 | 
				
			||||||
		for (it=count; it; it--)
 | 
							for (it=count; it; it--)
 | 
				
			||||||
			DES_ecb_encrypt(buf_as_des_cblock,buf_as_des_cblock,
 | 
								DES_ecb_encrypt((DES_cblock *)buf,
 | 
				
			||||||
 | 
									(DES_cblock *)buf,
 | 
				
			||||||
				&sch,DES_ENCRYPT);
 | 
									&sch,DES_ENCRYPT);
 | 
				
			||||||
		d=Time_F(STOP);
 | 
							d=Time_F(STOP);
 | 
				
			||||||
		} while (d <3);
 | 
							} while (d <3);
 | 
				
			||||||
@@ -2132,7 +2140,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				ret=RSA_verify(NID_md5_sha1, buf,36, buf2,
 | 
									ret=RSA_verify(NID_md5_sha1, buf,36, buf2,
 | 
				
			||||||
					rsa_num, rsa_key[j]);
 | 
										rsa_num, rsa_key[j]);
 | 
				
			||||||
				if (ret == 0)
 | 
									if (ret <= 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bio_err,
 | 
										BIO_printf(bio_err,
 | 
				
			||||||
						"RSA verify failure\n");
 | 
											"RSA verify failure\n");
 | 
				
			||||||
@@ -2462,7 +2470,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	if (rnd_fake) RAND_cleanup();
 | 
						if (rnd_fake) RAND_cleanup();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
show_res:
 | 
					show_res:
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	if(!mr)
 | 
						if(!mr)
 | 
				
			||||||
@@ -2717,7 +2725,7 @@ static void print_result(int alg,int run_no,int count,double time_used)
 | 
				
			|||||||
	results[alg][run_no]=((double)count)/time_used*lengths[run_no];
 | 
						results[alg][run_no]=((double)count)/time_used*lengths[run_no];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_FORK
 | 
					#ifndef NO_FORK
 | 
				
			||||||
static char *sstrsep(char **string, const char *delim)
 | 
					static char *sstrsep(char **string, const char *delim)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    char isdelim[256];
 | 
					    char isdelim[256];
 | 
				
			||||||
@@ -2760,6 +2768,8 @@ static int do_multi(int multi)
 | 
				
			|||||||
	for(n=0 ; n < multi ; ++n)
 | 
						for(n=0 ; n < multi ; ++n)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		pipe(fd);
 | 
							pipe(fd);
 | 
				
			||||||
 | 
							fflush(stdout);
 | 
				
			||||||
 | 
							fflush(stderr);
 | 
				
			||||||
		if(fork())
 | 
							if(fork())
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			close(fd[1]);
 | 
								close(fd[1]);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
/* apps/spkac.c */
 | 
					/* apps/spkac.c */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
 | 
					/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
 | 
				
			||||||
 * project 1999. Based on an original idea by Massimiliano Pala
 | 
					 * project 1999. Based on an original idea by Massimiliano Pala
 | 
				
			||||||
 * (madwolf@openca.org).
 | 
					 * (madwolf@openca.org).
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -285,7 +285,7 @@ bad:
 | 
				
			|||||||
	pkey = NETSCAPE_SPKI_get_pubkey(spki);
 | 
						pkey = NETSCAPE_SPKI_get_pubkey(spki);
 | 
				
			||||||
	if(verify) {
 | 
						if(verify) {
 | 
				
			||||||
		i = NETSCAPE_SPKI_verify(spki, pkey);
 | 
							i = NETSCAPE_SPKI_verify(spki, pkey);
 | 
				
			||||||
		if(i) BIO_printf(bio_err, "Signature OK\n");
 | 
							if (i > 0) BIO_printf(bio_err, "Signature OK\n");
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			BIO_printf(bio_err, "Signature Failure\n");
 | 
								BIO_printf(bio_err, "Signature Failure\n");
 | 
				
			||||||
			ERR_print_errors(bio_err);
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -266,7 +266,7 @@ static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ret=0;
 | 
						ret=0;
 | 
				
			||||||
end:
 | 
					end:
 | 
				
			||||||
	if (i)
 | 
						if (i > 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		fprintf(stdout,"OK\n");
 | 
							fprintf(stdout,"OK\n");
 | 
				
			||||||
		ret=1;
 | 
							ret=1;
 | 
				
			||||||
@@ -367,4 +367,3 @@ static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)
 | 
				
			|||||||
		ERR_clear_error();
 | 
							ERR_clear_error();
 | 
				
			||||||
	return(ok);
 | 
						return(ok);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,7 +167,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			date=version=cflags=options=platform=dir=1;
 | 
								date=version=cflags=options=platform=dir=1;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"usage:version -[avbofp]\n");
 | 
								BIO_printf(bio_err,"usage:version -[avbofpd]\n");
 | 
				
			||||||
			ret=1;
 | 
								ret=1;
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								apps/x509.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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",
 | 
				
			||||||
 | 
					" -ocsp_uri       - 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)
 | 
				
			||||||
@@ -535,7 +539,6 @@ bad:
 | 
				
			|||||||
	if (reqfile)
 | 
						if (reqfile)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		EVP_PKEY *pkey;
 | 
							EVP_PKEY *pkey;
 | 
				
			||||||
		X509_CINF *ci;
 | 
					 | 
				
			||||||
		BIO *in;
 | 
							BIO *in;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!sign_flag && !CA_flag)
 | 
							if (!sign_flag && !CA_flag)
 | 
				
			||||||
@@ -603,7 +606,6 @@ bad:
 | 
				
			|||||||
		print_name(bio_err, "subject=", X509_REQ_get_subject_name(req), nmflag);
 | 
							print_name(bio_err, "subject=", X509_REQ_get_subject_name(req), nmflag);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((x=X509_new()) == NULL) goto end;
 | 
							if ((x=X509_new()) == NULL) goto end;
 | 
				
			||||||
		ci=x->cert_info;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sno == NULL)
 | 
							if (sno == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -731,11 +733,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);
 | 
				
			||||||
@@ -964,7 +969,7 @@ bad:
 | 
				
			|||||||
				else
 | 
									else
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					pk=load_key(bio_err,
 | 
										pk=load_key(bio_err,
 | 
				
			||||||
						keyfile, FORMAT_PEM, 0,
 | 
											keyfile, keyformat, 0,
 | 
				
			||||||
						passin, e, "request key");
 | 
											passin, e, "request key");
 | 
				
			||||||
					if (pk == NULL) goto end;
 | 
										if (pk == NULL) goto end;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
@@ -1144,7 +1149,8 @@ static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest,
 | 
				
			|||||||
	/* NOTE: this certificate can/should be self signed, unless it was
 | 
						/* NOTE: this certificate can/should be self signed, unless it was
 | 
				
			||||||
	 * a certificate request in which case it is not. */
 | 
						 * a certificate request in which case it is not. */
 | 
				
			||||||
	X509_STORE_CTX_set_cert(&xsc,x);
 | 
						X509_STORE_CTX_set_cert(&xsc,x);
 | 
				
			||||||
	if (!reqfile && !X509_verify_cert(&xsc))
 | 
						X509_STORE_CTX_set_flags(&xsc, X509_V_FLAG_CHECK_SS_SIGNATURE);
 | 
				
			||||||
 | 
						if (!reqfile && X509_verify_cert(&xsc) <= 0)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!X509_check_private_key(xca,pkey))
 | 
						if (!X509_check_private_key(xca,pkey))
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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-----
 | 
					 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user