Compare commits
	
		
			829 Commits
		
	
	
		
			OpenSSL-fi
			...
			OpenSSL_1_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c90c41f09d | ||
| 
						 | 
					c47b636a2c | ||
| 
						 | 
					7200b39ecd | ||
| 
						 | 
					84c95826de | ||
| 
						 | 
					63819e6f00 | ||
| 
						 | 
					8206dba75c | ||
| 
						 | 
					528ef87850 | ||
| 
						 | 
					9004c53107 | ||
| 
						 | 
					f47f99f295 | ||
| 
						 | 
					00f473b3cc | ||
| 
						 | 
					356de7146e | ||
| 
						 | 
					9eab925395 | ||
| 
						 | 
					22d89c501e | ||
| 
						 | 
					c06916db9f | ||
| 
						 | 
					ef7545a3e6 | ||
| 
						 | 
					fecb4ff331 | ||
| 
						 | 
					2a4adf19c8 | ||
| 
						 | 
					44c854ddb9 | ||
| 
						 | 
					47091035f1 | ||
| 
						 | 
					f3d51d7740 | ||
| 
						 | 
					70d3b4b653 | ||
| 
						 | 
					2fb94e4861 | ||
| 
						 | 
					1b84893905 | ||
| 
						 | 
					68b5330040 | ||
| 
						 | 
					da7ae62abd | ||
| 
						 | 
					f53337b89c | ||
| 
						 | 
					f70a5895e3 | ||
| 
						 | 
					d41bbd0db5 | ||
| 
						 | 
					49956294fc | ||
| 
						 | 
					48373e55d1 | ||
| 
						 | 
					42369021ed | ||
| 
						 | 
					b00fe7ce18 | ||
| 
						 | 
					872e3fd502 | ||
| 
						 | 
					c11ada6c99 | ||
| 
						 | 
					8f0968850b | ||
| 
						 | 
					0b96f60a56 | ||
| 
						 | 
					ab06ff6bee | ||
| 
						 | 
					bba8456e65 | ||
| 
						 | 
					b493a05720 | ||
| 
						 | 
					c2a8133d1c | ||
| 
						 | 
					e935440ad7 | ||
| 
						 | 
					8eaf563c41 | ||
| 
						 | 
					80d7e6b039 | ||
| 
						 | 
					9c44e33230 | ||
| 
						 | 
					b86f3197b7 | ||
| 
						 | 
					0875c00584 | ||
| 
						 | 
					dd3a770e07 | ||
| 
						 | 
					64763ce09b | ||
| 
						 | 
					2fffc29bd1 | ||
| 
						 | 
					d2650c3a4a | ||
| 
						 | 
					b5bd966ea4 | ||
| 
						 | 
					e71f7786e3 | ||
| 
						 | 
					e3b95e6b24 | ||
| 
						 | 
					658eeec7cd | ||
| 
						 | 
					e1c3d65f08 | ||
| 
						 | 
					2e4abe2ce2 | ||
| 
						 | 
					ea294bb50e | ||
| 
						 | 
					b58ea0b941 | ||
| 
						 | 
					16067fe5fd | ||
| 
						 | 
					f2e9070f26 | ||
| 
						 | 
					fe8629e1a5 | ||
| 
						 | 
					2a12eff4b2 | ||
| 
						 | 
					b680fef061 | ||
| 
						 | 
					7f7414e054 | ||
| 
						 | 
					8b9db484ed | ||
| 
						 | 
					f59f2fcbff | ||
| 
						 | 
					419a530194 | ||
| 
						 | 
					69a8901eb1 | ||
| 
						 | 
					2bcd08e691 | ||
| 
						 | 
					167d692925 | ||
| 
						 | 
					025ee1dbde | ||
| 
						 | 
					dce7b92d0b | ||
| 
						 | 
					db886c2a2b | ||
| 
						 | 
					4d43129446 | ||
| 
						 | 
					92107f8150 | ||
| 
						 | 
					e82d6a2019 | ||
| 
						 | 
					4e5755cd85 | ||
| 
						 | 
					dda8dcd2c0 | ||
| 
						 | 
					16646b0018 | ||
| 
						 | 
					320881c25c | ||
| 
						 | 
					1d23fb382e | ||
| 
						 | 
					c4f1942a76 | ||
| 
						 | 
					38c42c6eea | ||
| 
						 | 
					51eb247d0f | ||
| 
						 | 
					8d22673a62 | ||
| 
						 | 
					3622d3743e | ||
| 
						 | 
					fbbf28e7c2 | ||
| 
						 | 
					f5dac77c06 | ||
| 
						 | 
					067d72a082 | ||
| 
						 | 
					ac0f3f506a | ||
| 
						 | 
					f819147028 | ||
| 
						 | 
					a530963f05 | ||
| 
						 | 
					bc5a53f5e9 | ||
| 
						 | 
					83382fb9d5 | ||
| 
						 | 
					0674370017 | ||
| 
						 | 
					2f91cb2c5e | ||
| 
						 | 
					acb25c2327 | ||
| 
						 | 
					2d842a90f8 | ||
| 
						 | 
					80705bfc50 | ||
| 
						 | 
					2a8692311d | ||
| 
						 | 
					7d0ed89d57 | ||
| 
						 | 
					0912fae6ce | ||
| 
						 | 
					0bb2154ee9 | ||
| 
						 | 
					c9355e20c3 | ||
| 
						 | 
					6545372c24 | ||
| 
						 | 
					17f8412983 | ||
| 
						 | 
					d48df9a91b | ||
| 
						 | 
					65448fd0d3 | ||
| 
						 | 
					a677c87b7b | ||
| 
						 | 
					f8a123b4a2 | ||
| 
						 | 
					c64beae686 | ||
| 
						 | 
					99ef8323e4 | ||
| 
						 | 
					2668c58969 | ||
| 
						 | 
					5ae3168a77 | ||
| 
						 | 
					559579659c | ||
| 
						 | 
					2dd74160cc | ||
| 
						 | 
					2adf63272c | ||
| 
						 | 
					fb5a0fb8f1 | ||
| 
						 | 
					c222de16ce | ||
| 
						 | 
					19091ac236 | ||
| 
						 | 
					2fcf251d3d | ||
| 
						 | 
					dab5848cd9 | ||
| 
						 | 
					a02f0f3d69 | ||
| 
						 | 
					e69d49364e | ||
| 
						 | 
					38921f0abf | ||
| 
						 | 
					d76ce84c92 | ||
| 
						 | 
					c3c7a0d26e | ||
| 
						 | 
					d06bc800f2 | ||
| 
						 | 
					a01dc637bd | ||
| 
						 | 
					3bbbe757ea | ||
| 
						 | 
					76474e519f | ||
| 
						 | 
					420f572d49 | ||
| 
						 | 
					6d65d44b95 | ||
| 
						 | 
					91e1ff77a0 | ||
| 
						 | 
					c8e60ec8fa | ||
| 
						 | 
					e840570207 | ||
| 
						 | 
					077527f19e | ||
| 
						 | 
					00daa2e6c6 | ||
| 
						 | 
					000f221d60 | ||
| 
						 | 
					579a605494 | ||
| 
						 | 
					fa29ebd7ed | ||
| 
						 | 
					3360999046 | ||
| 
						 | 
					0b965e59cb | ||
| 
						 | 
					1684846f54 | ||
| 
						 | 
					dde6d9520c | ||
| 
						 | 
					f9a772b743 | ||
| 
						 | 
					0d6f7dbb50 | ||
| 
						 | 
					994a1ea900 | ||
| 
						 | 
					e5d1fd38d1 | ||
| 
						 | 
					a330ed26be | ||
| 
						 | 
					ca0a86c89d | ||
| 
						 | 
					1cf7bbce48 | ||
| 
						 | 
					4cdde22432 | ||
| 
						 | 
					a28cee6efe | ||
| 
						 | 
					1977bafba4 | ||
| 
						 | 
					3c96907f2b | ||
| 
						 | 
					2d96a30dc7 | ||
| 
						 | 
					c09d1df7d3 | ||
| 
						 | 
					c20dd45477 | ||
| 
						 | 
					abb320463d | ||
| 
						 | 
					ada3f8b5d3 | ||
| 
						 | 
					6172561597 | ||
| 
						 | 
					368b64d6dd | ||
| 
						 | 
					4ed0ca2b3e | ||
| 
						 | 
					a92f98c630 | ||
| 
						 | 
					4385b556b4 | ||
| 
						 | 
					5e7c9519b8 | ||
| 
						 | 
					ef02492908 | ||
| 
						 | 
					86d5f9ba4f | ||
| 
						 | 
					febcec6254 | ||
| 
						 | 
					f07cb1ce8e | ||
| 
						 | 
					b3c17a4805 | ||
| 
						 | 
					7b83fe34c0 | ||
| 
						 | 
					e0b1c57ae0 | ||
| 
						 | 
					6806b06d21 | ||
| 
						 | 
					0af0e9d747 | ||
| 
						 | 
					2191b3ba44 | ||
| 
						 | 
					73020a945b | ||
| 
						 | 
					9c2d0cd11c | ||
| 
						 | 
					0ef9b9c7bf | ||
| 
						 | 
					c14c6e996d | ||
| 
						 | 
					51381cd4ed | ||
| 
						 | 
					8c9ab050e5 | ||
| 
						 | 
					b6996c7849 | ||
| 
						 | 
					2c23b0716e | ||
| 
						 | 
					f548a0e4d5 | ||
| 
						 | 
					a404f63f92 | ||
| 
						 | 
					b54f50d277 | ||
| 
						 | 
					10ba241909 | ||
| 
						 | 
					1f238b1c4a | ||
| 
						 | 
					ef85bf8c2b | ||
| 
						 | 
					cbfccdb729 | ||
| 
						 | 
					94111aa401 | ||
| 
						 | 
					eec48070a1 | ||
| 
						 | 
					eebe668174 | ||
| 
						 | 
					8a15a4a7b4 | ||
| 
						 | 
					19057003f1 | ||
| 
						 | 
					031648d4ce | ||
| 
						 | 
					02bee340a2 | ||
| 
						 | 
					f6f2f68a05 | ||
| 
						 | 
					982d68a0c0 | ||
| 
						 | 
					7585a86a76 | ||
| 
						 | 
					73190f1b46 | ||
| 
						 | 
					6673ac592a | ||
| 
						 | 
					59aa655b53 | ||
| 
						 | 
					c4c99b4961 | ||
| 
						 | 
					ccbbcddd5f | ||
| 
						 | 
					65d82478d8 | ||
| 
						 | 
					02a6518a02 | ||
| 
						 | 
					a79053511b | ||
| 
						 | 
					eb56eb2279 | ||
| 
						 | 
					d40f6d4a02 | ||
| 
						 | 
					943ae0951a | ||
| 
						 | 
					999eeaba14 | ||
| 
						 | 
					dfa81d9efb | ||
| 
						 | 
					1dba06e7b0 | ||
| 
						 | 
					daac87be95 | ||
| 
						 | 
					e97359435e | ||
| 
						 | 
					afce9bcca1 | ||
| 
						 | 
					9c7baca820 | ||
| 
						 | 
					618265e645 | ||
| 
						 | 
					9728978b75 | ||
| 
						 | 
					938c0bbae1 | ||
| 
						 | 
					a0cd818831 | ||
| 
						 | 
					31c4ab5401 | ||
| 
						 | 
					1f65529824 | ||
| 
						 | 
					5b3a6eedd1 | ||
| 
						 | 
					6938440d68 | ||
| 
						 | 
					57ec6c9bad | ||
| 
						 | 
					7a09bc4068 | ||
| 
						 | 
					deb15645a8 | ||
| 
						 | 
					f0b358e8b9 | ||
| 
						 | 
					dce2b5a8fc | ||
| 
						 | 
					59d100d959 | ||
| 
						 | 
					d497b5362b | ||
| 
						 | 
					369b0abdc2 | ||
| 
						 | 
					72240ab31a | ||
| 
						 | 
					dc4e1ddc9f | ||
| 
						 | 
					ff656346fa | ||
| 
						 | 
					ca91057d50 | ||
| 
						 | 
					8c1e7de6cb | ||
| 
						 | 
					207886cd3a | ||
| 
						 | 
					336d1ee733 | ||
| 
						 | 
					bed2b769f5 | ||
| 
						 | 
					26029d9c4c | ||
| 
						 | 
					c64c888929 | ||
| 
						 | 
					8d9db41880 | ||
| 
						 | 
					4fae54a8e0 | ||
| 
						 | 
					9f35928719 | ||
| 
						 | 
					c5af032df5 | ||
| 
						 | 
					8a898a6fcc | ||
| 
						 | 
					9f827ded1c | ||
| 
						 | 
					5daa9411a0 | ||
| 
						 | 
					094d4019b8 | ||
| 
						 | 
					1507f3abba | ||
| 
						 | 
					30e8defe52 | ||
| 
						 | 
					9f4dd3e3e3 | ||
| 
						 | 
					8c00014d7e | ||
| 
						 | 
					1cf12a6350 | ||
| 
						 | 
					dc9461e23f | ||
| 
						 | 
					72d57050df | ||
| 
						 | 
					49d1f665a4 | ||
| 
						 | 
					2c25edc4c1 | ||
| 
						 | 
					d2f098b33d | ||
| 
						 | 
					6f4f7f35f3 | ||
| 
						 | 
					0a4fe6c8db | ||
| 
						 | 
					7bba401d5d | ||
| 
						 | 
					c73cff12f1 | ||
| 
						 | 
					b32d93840e | ||
| 
						 | 
					cb457849fd | ||
| 
						 | 
					cb3c30059a | ||
| 
						 | 
					20dc93e49e | ||
| 
						 | 
					b620447dcc | ||
| 
						 | 
					4ffd2ad1d3 | ||
| 
						 | 
					acc9938ba5 | ||
| 
						 | 
					f6d13ac8cf | ||
| 
						 | 
					24cb653c6b | ||
| 
						 | 
					6dfd3cf68e | ||
| 
						 | 
					073775cbbb | ||
| 
						 | 
					e995d5044e | ||
| 
						 | 
					5b0a79a27a | ||
| 
						 | 
					6747de655e | ||
| 
						 | 
					91bad2b09e | ||
| 
						 | 
					1244d5b713 | ||
| 
						 | 
					c0ed5cd47b | ||
| 
						 | 
					c8281fd38e | ||
| 
						 | 
					fe8e6bff9b | ||
| 
						 | 
					9caf25d144 | ||
| 
						 | 
					348620c7ac | ||
| 
						 | 
					30fc2ab92b | ||
| 
						 | 
					5b5464d525 | ||
| 
						 | 
					cd15a0528f | ||
| 
						 | 
					7b52778eff | ||
| 
						 | 
					162de2f2b5 | ||
| 
						 | 
					f6e4af6fd7 | ||
| 
						 | 
					32b76dcdac | ||
| 
						 | 
					bcfd252052 | ||
| 
						 | 
					32c452779e | ||
| 
						 | 
					118b90c59e | ||
| 
						 | 
					f6a61b140e | ||
| 
						 | 
					75ece4b5cf | ||
| 
						 | 
					724cca4178 | ||
| 
						 | 
					5b3fdb0181 | ||
| 
						 | 
					fcc3d0265d | ||
| 
						 | 
					5356ea7cde | ||
| 
						 | 
					06226df1a9 | ||
| 
						 | 
					bf638ef026 | ||
| 
						 | 
					07973d5db8 | ||
| 
						 | 
					3b3f71121b | ||
| 
						 | 
					47333a34d5 | ||
| 
						 | 
					d92138f703 | ||
| 
						 | 
					b2bf335327 | ||
| 
						 | 
					33bec62a20 | ||
| 
						 | 
					2e630b1847 | ||
| 
						 | 
					002d3fe863 | ||
| 
						 | 
					fb24311e7c | ||
| 
						 | 
					90278430d9 | ||
| 
						 | 
					bcd9d12a8d | ||
| 
						 | 
					79363339b7 | ||
| 
						 | 
					fbe2c6b33e | ||
| 
						 | 
					fc11f47229 | ||
| 
						 | 
					2b23d89d14 | ||
| 
						 | 
					9cfa3cff54 | ||
| 
						 | 
					6507653e72 | ||
| 
						 | 
					7fe747d1eb | ||
| 
						 | 
					32567c9f3b | ||
| 
						 | 
					4f3d52fedc | ||
| 
						 | 
					8321bab39c | ||
| 
						 | 
					989238802a | ||
| 
						 | 
					9051fc538f | ||
| 
						 | 
					03fd7f27db | ||
| 
						 | 
					45d6a15ae9 | ||
| 
						 | 
					6c6ca18664 | ||
| 
						 | 
					97fe2b40c1 | ||
| 
						 | 
					f689ab5017 | ||
| 
						 | 
					edb7cac271 | ||
| 
						 | 
					81d87a2a28 | ||
| 
						 | 
					7366f0b304 | ||
| 
						 | 
					1d8fa09c80 | ||
| 
						 | 
					e085e6c84c | ||
| 
						 | 
					008fa4584d | ||
| 
						 | 
					c8c49133d9 | ||
| 
						 | 
					961f1dea06 | ||
| 
						 | 
					1700426256 | ||
| 
						 | 
					aa7f5baad2 | ||
| 
						 | 
					45acdd6f6d | ||
| 
						 | 
					8b354e776b | ||
| 
						 | 
					868f5e44ca | ||
| 
						 | 
					4e5fdd11ea | ||
| 
						 | 
					d552a3391a | ||
| 
						 | 
					d023b4e2dd | ||
| 
						 | 
					fa79cc9c23 | ||
| 
						 | 
					06daa75fb9 | ||
| 
						 | 
					ffa304c838 | ||
| 
						 | 
					df21765a3e | ||
| 
						 | 
					5a6ae115f8 | ||
| 
						 | 
					5e5df40b9b | ||
| 
						 | 
					6d4943e81f | ||
| 
						 | 
					57cffe901f | ||
| 
						 | 
					a758f61793 | ||
| 
						 | 
					b3b35df2a2 | ||
| 
						 | 
					5ad50246fc | ||
| 
						 | 
					d89b895cfd | ||
| 
						 | 
					d793c292cb | ||
| 
						 | 
					57749b1b9f | ||
| 
						 | 
					1cdb7854a5 | ||
| 
						 | 
					704d33b347 | ||
| 
						 | 
					b2a7515ee8 | ||
| 
						 | 
					f4f2b52995 | ||
| 
						 | 
					c7d5edbf5e | ||
| 
						 | 
					d8f07f1674 | ||
| 
						 | 
					78bfb45b07 | ||
| 
						 | 
					6ad4d60555 | ||
| 
						 | 
					2fad8aa209 | ||
| 
						 | 
					74397d45b2 | ||
| 
						 | 
					c8ca769d3b | ||
| 
						 | 
					25d42c17e3 | ||
| 
						 | 
					a377811f15 | ||
| 
						 | 
					ef1b6b2cf2 | ||
| 
						 | 
					1699389a46 | ||
| 
						 | 
					ad8ee3d7d1 | ||
| 
						 | 
					39f0a4d8e9 | ||
| 
						 | 
					15a9821cc2 | ||
| 
						 | 
					53e97e7433 | ||
| 
						 | 
					bc0ecd202a | ||
| 
						 | 
					b307daa23f | ||
| 
						 | 
					4c95b1bfda | ||
| 
						 | 
					9359fc5ff2 | ||
| 
						 | 
					a238d7d1eb | ||
| 
						 | 
					0e92313331 | ||
| 
						 | 
					3e719c99f5 | ||
| 
						 | 
					2a4d0dcb89 | ||
| 
						 | 
					2e155fde39 | ||
| 
						 | 
					9a8c8cb22e | ||
| 
						 | 
					04aa7441ab | ||
| 
						 | 
					28dc54f6d9 | ||
| 
						 | 
					a1e1165200 | ||
| 
						 | 
					ddba003d5e | ||
| 
						 | 
					e59d9a34c9 | ||
| 
						 | 
					9e198c4bd0 | ||
| 
						 | 
					7eceffbfef | ||
| 
						 | 
					8043f01b13 | ||
| 
						 | 
					41c0f68630 | ||
| 
						 | 
					2c627637c5 | ||
| 
						 | 
					58f4b3511e | ||
| 
						 | 
					93fac08ec3 | ||
| 
						 | 
					23c3bee970 | ||
| 
						 | 
					73ff97ad76 | ||
| 
						 | 
					0d8ffc2007 | ||
| 
						 | 
					a32f7fb832 | ||
| 
						 | 
					496cf69e40 | ||
| 
						 | 
					eb17330837 | ||
| 
						 | 
					2708603bb4 | ||
| 
						 | 
					e4f1cda7de | ||
| 
						 | 
					4359b88bbe | ||
| 
						 | 
					c079fde3f7 | ||
| 
						 | 
					6e94156199 | ||
| 
						 | 
					1f67a3a985 | ||
| 
						 | 
					4cba294d79 | ||
| 
						 | 
					e642fd7a1c | ||
| 
						 | 
					5448e6739c | ||
| 
						 | 
					f0389d8d37 | ||
| 
						 | 
					a5313cf360 | ||
| 
						 | 
					b26c45b033 | ||
| 
						 | 
					986093affa | ||
| 
						 | 
					f88e0acb0e | ||
| 
						 | 
					aed461b431 | ||
| 
						 | 
					8bbd0e826c | ||
| 
						 | 
					40c45f86d4 | ||
| 
						 | 
					a0b7277724 | ||
| 
						 | 
					54bc369ad7 | ||
| 
						 | 
					2d3855fc6e | ||
| 
						 | 
					1cd47f5f6e | ||
| 
						 | 
					675564835c | ||
| 
						 | 
					2456cd58c4 | ||
| 
						 | 
					43a107026d | ||
| 
						 | 
					ef0498a00b | ||
| 
						 | 
					f1784f2fd2 | ||
| 
						 | 
					730f5752ff | ||
| 
						 | 
					a88c73b43a | ||
| 
						 | 
					a6d204e241 | ||
| 
						 | 
					941baf6641 | ||
| 
						 | 
					b41a614686 | ||
| 
						 | 
					aac751832a | ||
| 
						 | 
					52a08e90d1 | ||
| 
						 | 
					6b5f0458fe | ||
| 
						 | 
					b52a2738d4 | ||
| 
						 | 
					10f99d7b77 | ||
| 
						 | 
					593222afe1 | ||
| 
						 | 
					7b1856e5a1 | ||
| 
						 | 
					3d5d81bf39 | ||
| 
						 | 
					50f06b46f4 | ||
| 
						 | 
					be6076c0ad | ||
| 
						 | 
					6125e07d79 | ||
| 
						 | 
					d5b8c46499 | ||
| 
						 | 
					7805e23588 | ||
| 
						 | 
					9117b9d17a | ||
| 
						 | 
					e274c8fb72 | ||
| 
						 | 
					e8dbd66e2b | ||
| 
						 | 
					8b9b23603f | ||
| 
						 | 
					aefb9dc5e5 | ||
| 
						 | 
					a8c1b19a31 | ||
| 
						 | 
					29c8d2a54a | ||
| 
						 | 
					87827be0c2 | ||
| 
						 | 
					e4572e5210 | ||
| 
						 | 
					3e8e12a6b6 | ||
| 
						 | 
					5ddbb8f41a | ||
| 
						 | 
					3c44e92bcb | ||
| 
						 | 
					5e8d95f590 | ||
| 
						 | 
					2156704924 | ||
| 
						 | 
					4e49aa0ca3 | ||
| 
						 | 
					d5d1c53735 | ||
| 
						 | 
					1aac5c0ee8 | ||
| 
						 | 
					4434328b0a | ||
| 
						 | 
					9b2cfb890c | ||
| 
						 | 
					b2f364ec62 | ||
| 
						 | 
					b7aeb4c9b5 | ||
| 
						 | 
					370f48da2a | ||
| 
						 | 
					32def77ace | ||
| 
						 | 
					531c81ece8 | ||
| 
						 | 
					73582b8117 | ||
| 
						 | 
					5c33091cfa | ||
| 
						 | 
					56327ebe6a | ||
| 
						 | 
					e0031b1c78 | ||
| 
						 | 
					b2ac5cb2d0 | ||
| 
						 | 
					6757ef89b3 | ||
| 
						 | 
					bf6eea6536 | ||
| 
						 | 
					ec4346f6f9 | ||
| 
						 | 
					e42ff486a8 | ||
| 
						 | 
					bc9058d041 | ||
| 
						 | 
					4a276f3039 | ||
| 
						 | 
					acf47d8f24 | ||
| 
						 | 
					f62d1ea3d5 | ||
| 
						 | 
					f923bba73c | ||
| 
						 | 
					e3738c49b8 | ||
| 
						 | 
					41746da8c2 | ||
| 
						 | 
					23b97c6bb5 | ||
| 
						 | 
					4a7f7171f5 | ||
| 
						 | 
					961092281f | ||
| 
						 | 
					036b3f331b | ||
| 
						 | 
					9ac5c355a2 | ||
| 
						 | 
					3d0b604c14 | ||
| 
						 | 
					257b2bfb6c | ||
| 
						 | 
					90528846e8 | ||
| 
						 | 
					32509c9731 | ||
| 
						 | 
					d3f940833d | ||
| 
						 | 
					b335e351d4 | ||
| 
						 | 
					67bcde9ba8 | ||
| 
						 | 
					169bfde4d4 | ||
| 
						 | 
					0a7f291268 | ||
| 
						 | 
					0c2c2e71a6 | ||
| 
						 | 
					d1d746afb4 | ||
| 
						 | 
					db6e41f0ed | ||
| 
						 | 
					5b2b60ae98 | ||
| 
						 | 
					c90a1ae0c9 | ||
| 
						 | 
					c679fb298e | ||
| 
						 | 
					17c7cad545 | ||
| 
						 | 
					164c263b5c | ||
| 
						 | 
					a9bb9d0eb4 | ||
| 
						 | 
					cc6688d796 | ||
| 
						 | 
					9b1f24df3d | ||
| 
						 | 
					595e804ae3 | ||
| 
						 | 
					b381e9b952 | ||
| 
						 | 
					28418076b2 | ||
| 
						 | 
					abdfdb029e | ||
| 
						 | 
					8465b81d50 | ||
| 
						 | 
					ed65b6e512 | ||
| 
						 | 
					d793544518 | ||
| 
						 | 
					53480a673b | ||
| 
						 | 
					ad187f8905 | ||
| 
						 | 
					2280f82fc6 | ||
| 
						 | 
					e6714faffb | ||
| 
						 | 
					af8f2bb174 | ||
| 
						 | 
					d7501c16bf | ||
| 
						 | 
					804196a418 | ||
| 
						 | 
					50d70c01d6 | ||
| 
						 | 
					9fc601cfbb | ||
| 
						 | 
					fed5333248 | ||
| 
						 | 
					3d1dab4404 | ||
| 
						 | 
					29c2fd46d2 | ||
| 
						 | 
					a3d5cdb07c | ||
| 
						 | 
					d99c0f6b4a | ||
| 
						 | 
					43f21e62aa | ||
| 
						 | 
					50425bc137 | ||
| 
						 | 
					0c690586e0 | ||
| 
						 | 
					bc8c5fe58d | ||
| 
						 | 
					0cc0db32e3 | ||
| 
						 | 
					d68f7641a3 | ||
| 
						 | 
					4fcbaa3dd9 | ||
| 
						 | 
					5e56584285 | ||
| 
						 | 
					ca26ccb083 | ||
| 
						 | 
					3e8b713b06 | ||
| 
						 | 
					13eca7d782 | ||
| 
						 | 
					af3d4e1b02 | ||
| 
						 | 
					80afb40ae3 | ||
| 
						 | 
					3333428b44 | ||
| 
						 | 
					a131de9bb2 | ||
| 
						 | 
					0ddd002f60 | ||
| 
						 | 
					e7209103e6 | ||
| 
						 | 
					53f062d050 | ||
| 
						 | 
					b5b65403a4 | ||
| 
						 | 
					1a3914fe0c | ||
| 
						 | 
					b7e3cb31a5 | ||
| 
						 | 
					9769137a43 | ||
| 
						 | 
					c0688f1aef | ||
| 
						 | 
					6c29853bf2 | ||
| 
						 | 
					2e9802b7a7 | ||
| 
						 | 
					7483896e15 | ||
| 
						 | 
					4b4f249e0d | ||
| 
						 | 
					196dcf93bc | ||
| 
						 | 
					2c11ec308b | ||
| 
						 | 
					e5eb96c83a | ||
| 
						 | 
					54ed003ace | ||
| 
						 | 
					f18e10253d | ||
| 
						 | 
					c9add317a9 | ||
| 
						 | 
					6d1741030b | ||
| 
						 | 
					b8dc932c05 | ||
| 
						 | 
					17f8d8db61 | ||
| 
						 | 
					38437fa135 | ||
| 
						 | 
					82f35daaaf | ||
| 
						 | 
					b529bba4bf | ||
| 
						 | 
					dde33ea9c3 | ||
| 
						 | 
					cb0d89705b | ||
| 
						 | 
					f49353b42f | ||
| 
						 | 
					573c61dcde | ||
| 
						 | 
					51f38e6c2d | ||
| 
						 | 
					2de213732a | ||
| 
						 | 
					3798c36686 | ||
| 
						 | 
					209abea1db | ||
| 
						 | 
					250705e7b5 | ||
| 
						 | 
					5a96822f2c | ||
| 
						 | 
					23b34259e0 | ||
| 
						 | 
					11b6cb8aae | ||
| 
						 | 
					a4bade7aac | ||
| 
						 | 
					e322b5d167 | ||
| 
						 | 
					01af4edcfe | ||
| 
						 | 
					ff0945cbdc | ||
| 
						 | 
					d5ec7d66a8 | ||
| 
						 | 
					dc0aebabe6 | ||
| 
						 | 
					52828ca214 | ||
| 
						 | 
					757e9886a0 | ||
| 
						 | 
					f45e8c7bdd | ||
| 
						 | 
					ea904b4074 | ||
| 
						 | 
					ec6158d029 | ||
| 
						 | 
					4386445c18 | ||
| 
						 | 
					a585aa6750 | ||
| 
						 | 
					2475a52061 | ||
| 
						 | 
					001dfac061 | ||
| 
						 | 
					1b37c55e26 | ||
| 
						 | 
					3442781798 | ||
| 
						 | 
					c9d3f123a6 | ||
| 
						 | 
					d069a4d15d | ||
| 
						 | 
					f1ad8fb627 | ||
| 
						 | 
					d7406b1528 | ||
| 
						 | 
					02ce897e80 | ||
| 
						 | 
					0bd9d3a60e | ||
| 
						 | 
					b4c81fb6db | ||
| 
						 | 
					0f566bda2b | ||
| 
						 | 
					f97a8149cd | ||
| 
						 | 
					f4b6a3e9c0 | ||
| 
						 | 
					7dfae89768 | ||
| 
						 | 
					d41ca3f0e2 | ||
| 
						 | 
					65fc4c55be | ||
| 
						 | 
					5135d6b985 | ||
| 
						 | 
					2202edeff0 | ||
| 
						 | 
					c8f759ec74 | ||
| 
						 | 
					5fda10c6f1 | ||
| 
						 | 
					11ba084e1b | ||
| 
						 | 
					cddd00166c | ||
| 
						 | 
					0190aa7353 | ||
| 
						 | 
					1546de87f0 | ||
| 
						 | 
					affffaed3d | ||
| 
						 | 
					0c644f1462 | ||
| 
						 | 
					a2da5c7daa | ||
| 
						 | 
					c155d83f5b | ||
| 
						 | 
					5a03e3ac3f | ||
| 
						 | 
					08b2097967 | ||
| 
						 | 
					15401859b5 | ||
| 
						 | 
					6f24165170 | ||
| 
						 | 
					a8afd9382c | ||
| 
						 | 
					caddf00d78 | ||
| 
						 | 
					e105098b3f | ||
| 
						 | 
					9852e7e4d7 | ||
| 
						 | 
					b855560192 | ||
| 
						 | 
					f2f50efea3 | ||
| 
						 | 
					2b3cd246e5 | ||
| 
						 | 
					7171ade2c2 | ||
| 
						 | 
					76ec9151d1 | ||
| 
						 | 
					6c24dd9005 | ||
| 
						 | 
					e323afb0ce | ||
| 
						 | 
					1fd43fd86e | ||
| 
						 | 
					3e70c81ed9 | ||
| 
						 | 
					6e07229564 | ||
| 
						 | 
					859d5eb2d7 | ||
| 
						 | 
					29b0c4a01c | ||
| 
						 | 
					b824f0f458 | ||
| 
						 | 
					43ea53a04a | ||
| 
						 | 
					fa07f00aaf | ||
| 
						 | 
					dbb834ffeb | ||
| 
						 | 
					8549a8a5dc | ||
| 
						 | 
					887c250852 | ||
| 
						 | 
					710c1c34d1 | ||
| 
						 | 
					e16818108f | ||
| 
						 | 
					0cb76e79df | ||
| 
						 | 
					6cb419673e | ||
| 
						 | 
					72d668c332 | ||
| 
						 | 
					5ce4799a38 | ||
| 
						 | 
					6178da0142 | ||
| 
						 | 
					27713e3fc2 | ||
| 
						 | 
					3492c47b18 | ||
| 
						 | 
					43dc001b62 | ||
| 
						 | 
					8280b43a62 | ||
| 
						 | 
					85d9b02d16 | ||
| 
						 | 
					bfd502f027 | ||
| 
						 | 
					f1ed5fa827 | ||
| 
						 | 
					5bb9e1b4d4 | ||
| 
						 | 
					7de819237d | ||
| 
						 | 
					6cfab29b71 | ||
| 
						 | 
					55708796af | ||
| 
						 | 
					7074f1df07 | ||
| 
						 | 
					67d8ab07e6 | ||
| 
						 | 
					4e63da0669 | ||
| 
						 | 
					15b0a5651c | ||
| 
						 | 
					4e66723517 | ||
| 
						 | 
					3e53c86001 | ||
| 
						 | 
					524e5b844b | ||
| 
						 | 
					e1f09dfd84 | ||
| 
						 | 
					f16411ccfd | ||
| 
						 | 
					2bbcd45b05 | ||
| 
						 | 
					fdc6c6ef08 | ||
| 
						 | 
					6e87cc8da6 | ||
| 
						 | 
					2d0b6c72b8 | ||
| 
						 | 
					3e84046f90 | ||
| 
						 | 
					cc1cb996f1 | ||
| 
						 | 
					32fbeacdfb | ||
| 
						 | 
					431aad3c15 | ||
| 
						 | 
					0454f2c490 | ||
| 
						 | 
					5f911774bf | ||
| 
						 | 
					66b7e42790 | ||
| 
						 | 
					6a419388fc | ||
| 
						 | 
					abda7c1147 | ||
| 
						 | 
					88b48dc680 | ||
| 
						 | 
					661d35dfb2 | ||
| 
						 | 
					f99c9daa39 | ||
| 
						 | 
					019b3f3e5a | ||
| 
						 | 
					d6584eba8c | ||
| 
						 | 
					a379c433a3 | ||
| 
						 | 
					006c7c6bb1 | ||
| 
						 | 
					bd4a902a15 | ||
| 
						 | 
					17ae5e9f13 | ||
| 
						 | 
					baa5f52422 | ||
| 
						 | 
					b3620451b2 | ||
| 
						 | 
					d2f17d9615 | ||
| 
						 | 
					561cbe5678 | ||
| 
						 | 
					756d2074b8 | ||
| 
						 | 
					c65db618bb | ||
| 
						 | 
					8355647403 | ||
| 
						 | 
					b839d73411 | ||
| 
						 | 
					4563c1e043 | ||
| 
						 | 
					11f35a036d | ||
| 
						 | 
					d8646dab14 | ||
| 
						 | 
					47b3cd98f2 | ||
| 
						 | 
					27c7e53882 | ||
| 
						 | 
					b2b28803fb | ||
| 
						 | 
					8e92b1b9ce | ||
| 
						 | 
					0f41ccf370 | ||
| 
						 | 
					c44544a1d7 | ||
| 
						 | 
					4e50f02638 | ||
| 
						 | 
					174ea15647 | ||
| 
						 | 
					18f8258a87 | ||
| 
						 | 
					376bbb5887 | ||
| 
						 | 
					2c8275409e | ||
| 
						 | 
					892582b541 | ||
| 
						 | 
					57b53c1b0a | ||
| 
						 | 
					004c3ca521 | ||
| 
						 | 
					f0f00f9272 | ||
| 
						 | 
					a243c68736 | ||
| 
						 | 
					467d9f2a34 | ||
| 
						 | 
					226a94963a | ||
| 
						 | 
					d7f0d147b1 | ||
| 
						 | 
					26902b9aad | ||
| 
						 | 
					3c69d6bec4 | ||
| 
						 | 
					4f44677a41 | ||
| 
						 | 
					88d9f669c5 | ||
| 
						 | 
					22e1421672 | ||
| 
						 | 
					5409414eff | ||
| 
						 | 
					7134507de0 | ||
| 
						 | 
					fe41d9853c | ||
| 
						 | 
					d07692cd96 | ||
| 
						 | 
					82ae57136b | ||
| 
						 | 
					30baeaaeab | ||
| 
						 | 
					87a0f4b92e | ||
| 
						 | 
					1b08bcbfe3 | ||
| 
						 | 
					346b1001eb | ||
| 
						 | 
					b61a84c8e6 | ||
| 
						 | 
					a543ea44bc | ||
| 
						 | 
					b0dd3d1b94 | ||
| 
						 | 
					461be68b75 | ||
| 
						 | 
					21fb688d26 | ||
| 
						 | 
					d8faad27b7 | ||
| 
						 | 
					dab7075946 | ||
| 
						 | 
					dfc8e96daa | ||
| 
						 | 
					71d3eaf358 | ||
| 
						 | 
					ef6b25be63 | ||
| 
						 | 
					b452f43322 | ||
| 
						 | 
					52891f832f | ||
| 
						 | 
					9990cb75c1 | ||
| 
						 | 
					a5cc69c7ae | ||
| 
						 | 
					0b4b8ba64e | ||
| 
						 | 
					268e78c305 | ||
| 
						 | 
					c900a78c99 | ||
| 
						 | 
					46ffb2dc97 | ||
| 
						 | 
					10acacb3bf | ||
| 
						 | 
					aab790a656 | ||
| 
						 | 
					1319aad994 | ||
| 
						 | 
					3c0ce01cea | ||
| 
						 | 
					9fcbefebdb | ||
| 
						 | 
					017d2a887f | ||
| 
						 | 
					0416482605 | ||
| 
						 | 
					0f17424918 | ||
| 
						 | 
					55ed10db21 | ||
| 
						 | 
					3877b6bfe9 | ||
| 
						 | 
					a0f32454b6 | ||
| 
						 | 
					6fda4d7e5d | ||
| 
						 | 
					36a252ea46 | ||
| 
						 | 
					a31a195246 | ||
| 
						 | 
					5f590d2218 | ||
| 
						 | 
					791b7bc715 | ||
| 
						 | 
					19ae090787 | ||
| 
						 | 
					db3076621b | ||
| 
						 | 
					9ae5743515 | ||
| 
						 | 
					c184b140df | ||
| 
						 | 
					9d80aa7e3f | ||
| 
						 | 
					15671a90a9 | ||
| 
						 | 
					0048464449 | ||
| 
						 | 
					b422166ce0 | ||
| 
						 | 
					81be661ae2 | ||
| 
						 | 
					8681c66eec | ||
| 
						 | 
					69a0034e50 | ||
| 
						 | 
					c9a1778134 | ||
| 
						 | 
					326794e9c6 | ||
| 
						 | 
					2dd5ca1fbc | ||
| 
						 | 
					3042945ac8 | ||
| 
						 | 
					da29b0d335 | ||
| 
						 | 
					6abbc68188 | ||
| 
						 | 
					25f6c7fd8b | ||
| 
						 | 
					1cf3571ea4 | ||
| 
						 | 
					d769e7a58c | ||
| 
						 | 
					fa3619f233 | ||
| 
						 | 
					a414cbcad3 | ||
| 
						 | 
					c6196da587 | ||
| 
						 | 
					5d48762647 | ||
| 
						 | 
					77e749405d | ||
| 
						 | 
					9ccd4e224f | ||
| 
						 | 
					1dad4f3672 | ||
| 
						 | 
					59745556b4 | ||
| 
						 | 
					fab4447179 | ||
| 
						 | 
					417b8d4705 | ||
| 
						 | 
					e614ec4769 | ||
| 
						 | 
					a6b03f4138 | ||
| 
						 | 
					809fa4cc59 | ||
| 
						 | 
					463f448595 | ||
| 
						 | 
					5cd0cf8cce | ||
| 
						 | 
					49cb959494 | ||
| 
						 | 
					783a73c47f | ||
| 
						 | 
					99bf516908 | ||
| 
						 | 
					a26c372cfc | ||
| 
						 | 
					ed5ac22e5b | ||
| 
						 | 
					3d11b8f896 | 
							
								
								
									
										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.
 | 
				
			||||||
							
								
								
									
										509
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										509
									
								
								CHANGES
									
									
									
									
									
								
							@@ -2,7 +2,208 @@
 | 
				
			|||||||
 OpenSSL CHANGES
 | 
					 OpenSSL CHANGES
 | 
				
			||||||
 _______________
 | 
					 _______________
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8k and 1.0  [xx XXX xxxx]
 | 
					 Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Nadhem Alfardan and Kenny Paterson have discovered an extension
 | 
				
			||||||
 | 
					     of the Vaudenay padding oracle attack on CBC mode encryption
 | 
				
			||||||
 | 
					     which enables an efficient plaintext recovery attack against
 | 
				
			||||||
 | 
					     the OpenSSL implementation of DTLS. Their attack exploits timing
 | 
				
			||||||
 | 
					     differences arising during decryption processing. A research
 | 
				
			||||||
 | 
					     paper describing this attack can be found at:
 | 
				
			||||||
 | 
					                  http://www.isg.rhul.ac.uk/~kp/dtls.pdf
 | 
				
			||||||
 | 
					     Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
 | 
				
			||||||
 | 
					     Security Group at Royal Holloway, University of London
 | 
				
			||||||
 | 
					     (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
 | 
				
			||||||
 | 
					     <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
 | 
				
			||||||
 | 
					     for preparing the fix. (CVE-2011-4108)
 | 
				
			||||||
 | 
					     [Robin Seggelmann, Michael Tuexen]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Clear bytes used for block padding of SSL 3.0 records.
 | 
				
			||||||
 | 
					     (CVE-2011-4576)
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Only allow one SGC handshake restart for SSL/TLS. (CVE-2011-4619)
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027)
 | 
				
			||||||
 | 
					     [Andrey Kulikov <amdeich@gmail.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Prevent malformed RFC3779 data triggering an assertion failure.
 | 
				
			||||||
 | 
					     Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
 | 
				
			||||||
 | 
					     and Rob Austein <sra@hactrn.net> for fixing it. (CVE-2011-4577)
 | 
				
			||||||
 | 
					     [Rob Austein <sra@hactrn.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Improved PRNG seeding for VOS.
 | 
				
			||||||
 | 
					     [Paul Green <Paul.Green@stratus.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix ssl_ciph.c set-up race.
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix spurious failures in ecdsatest.c.
 | 
				
			||||||
 | 
					     [Emilia K<>sper (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix the BIO_f_buffer() implementation (which was mixing different
 | 
				
			||||||
 | 
					     interpretations of the '..._len' fields).
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
 | 
				
			||||||
 | 
					     BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
 | 
				
			||||||
 | 
					     threads won't reuse the same blinding coefficients.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
 | 
				
			||||||
 | 
					     lock to call BN_BLINDING_invert_ex, and avoids one use of
 | 
				
			||||||
 | 
					     BN_BLINDING_update for each BN_BLINDING structure (previously,
 | 
				
			||||||
 | 
					     the last update always remained unused).
 | 
				
			||||||
 | 
					     [Emilia K<>sper (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
 | 
				
			||||||
 | 
					     [Bob Buckholz (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
 | 
				
			||||||
 | 
					     by initialising X509_STORE_CTX properly. (CVE-2011-3207)
 | 
				
			||||||
 | 
					     [Kaspar Brand <ossl@velox.ch>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
 | 
				
			||||||
 | 
					     for multi-threaded use of ECDH. (CVE-2011-3210)
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix x509_name_ex_d2i memory leak on bad inputs.
 | 
				
			||||||
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
 | 
				
			||||||
 | 
					     signature public key algorithm by using OID xref utilities instead.
 | 
				
			||||||
 | 
					     Before this you could only use some ECC ciphersuites with SHA1 only.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add protection against ECDSA timing attacks as mentioned in the paper
 | 
				
			||||||
 | 
					     by Billy Bob Brumley and Nicola Tuveri, see:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						http://eprint.iacr.org/2011/232.pdf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Billy Bob Brumley and Nicola Tuveri]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
 | 
				
			||||||
 | 
					     [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix bug in string printing code: if *any* escaping is enabled we must
 | 
				
			||||||
 | 
					     escape the escape character (backslash) or the resulting string is
 | 
				
			||||||
 | 
					     ambiguous.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 1.0.0b and 1.0.0c  [2 Dec 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Disable code workaround for ancient and obsolete Netscape browsers
 | 
				
			||||||
 | 
					     and servers: an attacker can use it in a ciphersuite downgrade attack.
 | 
				
			||||||
 | 
					     Thanks to Martin Rex for discovering this bug. CVE-2010-4180
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fixed J-PAKE implementation error, originally discovered by
 | 
				
			||||||
 | 
					     Sebastien Martini, further info and confirmation from Stefan
 | 
				
			||||||
 | 
					     Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
 | 
				
			||||||
 | 
					     [Ben Laurie]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 1.0.0a and 1.0.0b  [16 Nov 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix extension code to avoid race conditions which can result in a buffer
 | 
				
			||||||
 | 
					     overrun vulnerability: resumed sessions must not be modified as they can
 | 
				
			||||||
 | 
					     be shared by multiple threads. CVE-2010-3864
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix WIN32 build system to correctly link an ENGINE directory into
 | 
				
			||||||
 | 
					     a DLL. 
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 1.0.0 and 1.0.0a  [01 Jun 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover 
 | 
				
			||||||
 | 
					     (CVE-2010-1633)
 | 
				
			||||||
 | 
					     [Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8n and 1.0.0  [29 Mar 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
 | 
				
			||||||
 | 
					     context. The operation can be customised via the ctrl mechanism in
 | 
				
			||||||
 | 
					     case ENGINEs want to include additional functionality.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Tolerate yet another broken PKCS#8 key format: private key value negative.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
 | 
				
			||||||
 | 
					     output hashes compatible with older versions of OpenSSL.
 | 
				
			||||||
 | 
					     [Willy Weisz <weisz@vcpc.univie.ac.at>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix compression algorithm handling: if resuming a session use the
 | 
				
			||||||
 | 
					     compression algorithm of the resumed session instead of determining
 | 
				
			||||||
 | 
					     it from client hello again. Don't allow server to change algorithm.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add load_crls() function to apps tidying load_certs() too. Add option
 | 
				
			||||||
 | 
					     to verify utility to allow additional CRLs to be included.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Update OCSP request code to permit adding custom headers to the request:
 | 
				
			||||||
 | 
					     some responders need this.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) The function EVP_PKEY_sign() returns <=0 on error: check return code
 | 
				
			||||||
 | 
					     correctly.
 | 
				
			||||||
 | 
					     [Julia Lawall <julia@diku.dk>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Update verify callback code in apps/s_cb.c and apps/verify.c, it
 | 
				
			||||||
 | 
					     needlessly dereferenced structures, used obsolete functions and
 | 
				
			||||||
 | 
					     didn't handle all updated verify codes correctly.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Disable MD2 in the default configuration.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
 | 
				
			||||||
 | 
					     indicate the initial BIO being pushed or popped. This makes it possible
 | 
				
			||||||
 | 
					     to determine whether the BIO is the one explicitly called or as a result
 | 
				
			||||||
 | 
					     of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
 | 
				
			||||||
 | 
					     it handles reference counts correctly and doesn't zero out the I/O bio
 | 
				
			||||||
 | 
					     when it is not being explicitly popped. WARNING: applications which
 | 
				
			||||||
 | 
					     included workarounds for the old buggy behaviour will need to be modified
 | 
				
			||||||
 | 
					     or they could free up already freed BIOs.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
 | 
				
			||||||
 | 
					     renaming to all platforms (within the 0.9.8 branch, this was
 | 
				
			||||||
 | 
					     done conditionally on Netware platforms to avoid a name clash).
 | 
				
			||||||
 | 
					     [Guenter <lists@gknw.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add ECDHE and PSK support to DTLS.
 | 
				
			||||||
 | 
					     [Michael Tuexen <tuexen@fh-muenster.de>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
 | 
				
			||||||
 | 
					     be used on C++.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add "missing" function EVP_MD_flags() (without this the only way to
 | 
				
			||||||
 | 
					     retrieve a digest flags is by accessing the structure directly. Update
 | 
				
			||||||
 | 
					     EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
 | 
				
			||||||
 | 
					     or cipher is registered as in the "from" argument. Print out all
 | 
				
			||||||
 | 
					     registered digests in the dgst usage message instead of manually 
 | 
				
			||||||
 | 
					     attempting to work them out.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
 | 
				
			||||||
 | 
					     this allows the use of compression and extensions. Change default cipher
 | 
				
			||||||
 | 
					     string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
 | 
				
			||||||
 | 
					     by default unless an application cipher string requests it.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Alter match criteria in PKCS12_parse(). It used to try to use local
 | 
				
			||||||
 | 
					     key ids to find matching certificates and keys but some PKCS#12 files
 | 
				
			||||||
 | 
					     don't follow the (somewhat unwritten) rules and this strategy fails.
 | 
				
			||||||
 | 
					     Now just gather all certificates together and the first private key
 | 
				
			||||||
 | 
					     then look for the first certificate that matches the key.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Support use of registered digest and cipher names for dgst and cipher
 | 
					  *) Support use of registered digest and cipher names for dgst and cipher
 | 
				
			||||||
     commands instead of having to add each one as a special case. So now
 | 
					     commands instead of having to add each one as a special case. So now
 | 
				
			||||||
@@ -762,12 +963,295 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  *) Change 'Configure' script to enable Camellia by default.
 | 
					  *) Change 'Configure' script to enable Camellia by default.
 | 
				
			||||||
     [NTT]
 | 
					     [NTT]
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 Changes between 0.9.8r and 0.9.8s [xx XXX xxxx]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8k and 0.9.8l  [xx XXX xxxx]
 | 
					  *) Fix ssl_ciph.c set-up race.
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix spurious failures in ecdsatest.c.
 | 
				
			||||||
 | 
					     [Emilia K<>sper (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix the BIO_f_buffer() implementation (which was mixing different
 | 
				
			||||||
 | 
					     interpretations of the '..._len' fields).
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
 | 
				
			||||||
 | 
					     BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
 | 
				
			||||||
 | 
					     threads won't reuse the same blinding coefficients.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
 | 
				
			||||||
 | 
					     lock to call BN_BLINDING_invert_ex, and avoids one use of
 | 
				
			||||||
 | 
					     BN_BLINDING_update for each BN_BLINDING structure (previously,
 | 
				
			||||||
 | 
					     the last update always remained unused).
 | 
				
			||||||
 | 
					     [Emilia K<>sper (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
 | 
				
			||||||
 | 
					     for multi-threaded use of ECDH.
 | 
				
			||||||
 | 
					     [Adam Langley (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix x509_name_ex_d2i memory leak on bad inputs.
 | 
				
			||||||
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add protection against ECDSA timing attacks as mentioned in the paper
 | 
				
			||||||
 | 
					     by Billy Bob Brumley and Nicola Tuveri, see:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						http://eprint.iacr.org/2011/232.pdf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     [Billy Bob Brumley and Nicola Tuveri]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8q and 0.9.8r [8 Feb 2011]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
 | 
				
			||||||
 | 
					     [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix bug in string printing code: if *any* escaping is enabled we must
 | 
				
			||||||
 | 
					     escape the escape character (backslash) or the resulting string is
 | 
				
			||||||
 | 
					     ambiguous.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8p and 0.9.8q [2 Dec 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Disable code workaround for ancient and obsolete Netscape browsers
 | 
				
			||||||
 | 
					     and servers: an attacker can use it in a ciphersuite downgrade attack.
 | 
				
			||||||
 | 
					     Thanks to Martin Rex for discovering this bug. CVE-2010-4180
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fixed J-PAKE implementation error, originally discovered by
 | 
				
			||||||
 | 
					     Sebastien Martini, further info and confirmation from Stefan
 | 
				
			||||||
 | 
					     Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
 | 
				
			||||||
 | 
					     [Ben Laurie]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8o and 0.9.8p [16 Nov 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix extension code to avoid race conditions which can result in a buffer
 | 
				
			||||||
 | 
					     overrun vulnerability: resumed sessions must not be modified as they can
 | 
				
			||||||
 | 
					     be shared by multiple threads. CVE-2010-3864
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix for double free bug in ssl/s3_clnt.c CVE-2010-2939
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Don't reencode certificate when calculating signature: cache and use
 | 
				
			||||||
 | 
					     the original encoding instead. This makes signature verification of
 | 
				
			||||||
 | 
					     some broken encodings work correctly.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) ec2_GF2m_simple_mul bugfix: compute correct result if the output EC_POINT
 | 
				
			||||||
 | 
					     is also one of the inputs.
 | 
				
			||||||
 | 
					     [Emilia K<>sper <emilia.kasper@esat.kuleuven.be> (Google)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Don't repeatedly append PBE algorithms to table if they already exist.
 | 
				
			||||||
 | 
					     Sort table on each new add. This effectively makes the table read only
 | 
				
			||||||
 | 
					     after all algorithms are added and subsequent calls to PKCS12_pbe_add
 | 
				
			||||||
 | 
					     etc are non-op.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8n and 0.9.8o [01 Jun 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [NB: OpenSSL 0.9.8o and later 0.9.8 patch levels were released after
 | 
				
			||||||
 | 
					  OpenSSL 1.0.0.]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Correct a typo in the CMS ASN1 module which can result in invalid memory
 | 
				
			||||||
 | 
					     access or freeing data twice (CVE-2010-0742)
 | 
				
			||||||
 | 
					     [Steve Henson, Ronald Moesbergen <intercommit@gmail.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more
 | 
				
			||||||
 | 
					     common in certificates and some applications which only call
 | 
				
			||||||
 | 
					     SSL_library_init and not OpenSSL_add_all_algorithms() will fail.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) VMS fixes: 
 | 
				
			||||||
 | 
					     Reduce copying into .apps and .test in makevms.com
 | 
				
			||||||
 | 
					     Don't try to use blank CA certificate in CA.com
 | 
				
			||||||
 | 
					     Allow use of C files from original directories in maketests.com
 | 
				
			||||||
 | 
					     [Steven M. Schweda" <sms@antinode.info>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) When rejecting SSL/TLS records due to an incorrect version number, never
 | 
				
			||||||
 | 
					     update s->server with a new major version number.  As of
 | 
				
			||||||
 | 
					     - OpenSSL 0.9.8m if 'short' is a 16-bit type,
 | 
				
			||||||
 | 
					     - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
 | 
				
			||||||
 | 
					     the previous behavior could result in a read attempt at NULL when
 | 
				
			||||||
 | 
					     receiving specific incorrect SSL/TLS records once record payload
 | 
				
			||||||
 | 
					     protection is active.  (CVE-2010-0740)
 | 
				
			||||||
 | 
					     [Bodo Moeller, Adam Langley <agl@chromium.org>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL 
 | 
				
			||||||
 | 
					     could be crashed if the relevant tables were not present (e.g. chrooted).
 | 
				
			||||||
 | 
					     [Tomas Hoger <thoger@redhat.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Always check bn_wexpend() return values for failure.  (CVE-2009-3245)
 | 
				
			||||||
 | 
					     [Martin Olsson, Neel Mehta]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix X509_STORE locking: Every 'objs' access requires a lock (to
 | 
				
			||||||
 | 
					     accommodate for stack sorting, always a write lock!).
 | 
				
			||||||
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) On some versions of WIN32 Heap32Next is very slow. This can cause
 | 
				
			||||||
 | 
					     excessive delays in the RAND_poll(): over a minute. As a workaround
 | 
				
			||||||
 | 
					     include a time check in the inner Heap32Next loop too.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) The code that handled flushing of data in SSL/TLS originally used the
 | 
				
			||||||
 | 
					     BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
 | 
				
			||||||
 | 
					     the problem outlined in PR#1949. The fix suggested there however can
 | 
				
			||||||
 | 
					     trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
 | 
				
			||||||
 | 
					     of Apache). So instead simplify the code to flush unconditionally.
 | 
				
			||||||
 | 
					     This should be fine since flushing with no data to flush is a no op.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Handle TLS versions 2.0 and later properly and correctly use the
 | 
				
			||||||
 | 
					     highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
 | 
				
			||||||
 | 
					     off ancient servers have a habit of sticking around for a while...
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Modify compression code so it frees up structures without using the
 | 
				
			||||||
 | 
					     ex_data callbacks. This works around a problem where some applications
 | 
				
			||||||
 | 
					     call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
 | 
				
			||||||
 | 
					     restarting) then use compression (e.g. SSL with compression) later.
 | 
				
			||||||
 | 
					     This results in significant per-connection memory leaks and
 | 
				
			||||||
 | 
					     has caused some security issues including CVE-2008-1678 and
 | 
				
			||||||
 | 
					     CVE-2009-4355.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
 | 
				
			||||||
 | 
					     change when encrypting or decrypting.
 | 
				
			||||||
 | 
					     [Bodo Moeller]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
 | 
				
			||||||
 | 
					     connect and renegotiate with servers which do not support RI.
 | 
				
			||||||
 | 
					     Until RI is more widely deployed this option is enabled by default.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add "missing" ssl ctrls to clear options and mode.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) If client attempts to renegotiate and doesn't support RI respond with
 | 
				
			||||||
 | 
					     a no_renegotiation alert as required by RFC5746.  Some renegotiating
 | 
				
			||||||
 | 
					     TLS clients will continue a connection gracefully when they receive
 | 
				
			||||||
 | 
					     the alert. Unfortunately OpenSSL mishandled this alert and would hang
 | 
				
			||||||
 | 
					     waiting for a server hello which it will never receive. Now we treat a
 | 
				
			||||||
 | 
					     received no_renegotiation alert as a fatal error. This is because
 | 
				
			||||||
 | 
					     applications requesting a renegotiation might well expect it to succeed
 | 
				
			||||||
 | 
					     and would have no code in place to handle the server denying it so the
 | 
				
			||||||
 | 
					     only safe thing to do is to terminate the connection.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
 | 
				
			||||||
 | 
					     peer supports secure renegotiation and 0 otherwise. Print out peer
 | 
				
			||||||
 | 
					     renegotiation support in s_client/s_server.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Replace the highly broken and deprecated SPKAC certification method with
 | 
				
			||||||
 | 
					     the updated NID creation version. This should correctly handle UTF8.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Implement RFC5746. Re-enable renegotiation but require the extension
 | 
				
			||||||
 | 
					     as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
 | 
				
			||||||
 | 
					     turns out to be a bad idea. It has been replaced by
 | 
				
			||||||
 | 
					     SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
 | 
				
			||||||
 | 
					     SSL_CTX_set_options(). This is really not recommended unless you
 | 
				
			||||||
 | 
					     know what you are doing.
 | 
				
			||||||
 | 
					     [Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fixes to stateless session resumption handling. Use initial_ctx when
 | 
				
			||||||
 | 
					     issuing and attempting to decrypt tickets in case it has changed during
 | 
				
			||||||
 | 
					     servername handling. Use a non-zero length session ID when attempting
 | 
				
			||||||
 | 
					     stateless session resumption: this makes it possible to determine if
 | 
				
			||||||
 | 
					     a resumption has occurred immediately after receiving server hello
 | 
				
			||||||
 | 
					     (several places in OpenSSL subtly assume this) instead of later in
 | 
				
			||||||
 | 
					     the handshake.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) The functions ENGINE_ctrl(), OPENSSL_isservice(),
 | 
				
			||||||
 | 
					     CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
 | 
				
			||||||
 | 
					     fixes for a few places where the return code is not checked
 | 
				
			||||||
 | 
					     correctly.
 | 
				
			||||||
 | 
					     [Julia Lawall <julia@diku.dk>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add --strict-warnings option to Configure script to include devteam
 | 
				
			||||||
 | 
					     warnings in other configurations.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add support for --libdir option and LIBDIR variable in makefiles. This
 | 
				
			||||||
 | 
					     makes it possible to install openssl libraries in locations which
 | 
				
			||||||
 | 
					     have names other than "lib", for example "/usr/lib64" which some
 | 
				
			||||||
 | 
					     systems need.
 | 
				
			||||||
 | 
					     [Steve Henson, based on patch from Jeremy Utley]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Don't allow the use of leading 0x80 in OIDs. This is a violation of
 | 
				
			||||||
 | 
					     X690 8.9.12 and can produce some misleading textual output of OIDs.
 | 
				
			||||||
 | 
					     [Steve Henson, reported by Dan Kaminsky]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Delete MD2 from algorithm tables. This follows the recommendation in
 | 
				
			||||||
 | 
					     several standards that it is not used in new applications due to
 | 
				
			||||||
 | 
					     several cryptographic weaknesses. For binary compatibility reasons
 | 
				
			||||||
 | 
					     the MD2 API is still compiled in by default.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
 | 
				
			||||||
 | 
					     and restored.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
 | 
				
			||||||
 | 
					     OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
 | 
				
			||||||
 | 
					     clash.
 | 
				
			||||||
 | 
					     [Guenter <lists@gknw.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix the server certificate chain building code to use X509_verify_cert(),
 | 
				
			||||||
 | 
					     it used to have an ad-hoc builder which was unable to cope with anything
 | 
				
			||||||
 | 
					     other than a simple chain.
 | 
				
			||||||
 | 
					     [David Woodhouse <dwmw2@infradead.org>, Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Don't check self signed certificate signatures in X509_verify_cert()
 | 
				
			||||||
 | 
					     by default (a flag can override this): it just wastes time without
 | 
				
			||||||
 | 
					     adding any security. As a useful side effect self signed root CAs
 | 
				
			||||||
 | 
					     with non-FIPS digests are now usable in FIPS mode.
 | 
				
			||||||
 | 
					     [Steve Henson]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) In dtls1_process_out_of_seq_message() the check if the current message
 | 
				
			||||||
 | 
					     is already buffered was missing. For every new message was memory
 | 
				
			||||||
 | 
					     allocated, allowing an attacker to perform an denial of service attack
 | 
				
			||||||
 | 
					     with sending out of seq handshake messages until there is no memory
 | 
				
			||||||
 | 
					     left. Additionally every future messege was buffered, even if the
 | 
				
			||||||
 | 
					     sequence number made no sense and would be part of another handshake.
 | 
				
			||||||
 | 
					     So only messages with sequence numbers less than 10 in advance will be
 | 
				
			||||||
 | 
					     buffered.  (CVE-2009-1378)
 | 
				
			||||||
 | 
					     [Robin Seggelmann, discovered by Daniel Mentz] 	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Records are buffered if they arrive with a future epoch to be
 | 
				
			||||||
 | 
					     processed after finishing the corresponding handshake. There is
 | 
				
			||||||
 | 
					     currently no limitation to this buffer allowing an attacker to perform
 | 
				
			||||||
 | 
					     a DOS attack with sending records with future epochs until there is no
 | 
				
			||||||
 | 
					     memory left. This patch adds the pqueue_size() function to detemine
 | 
				
			||||||
 | 
					     the size of a buffer and limits the record buffer to 100 entries.
 | 
				
			||||||
 | 
					     (CVE-2009-1377)
 | 
				
			||||||
 | 
					     [Robin Seggelmann, discovered by Daniel Mentz] 	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Keep a copy of frag->msg_header.frag_len so it can be used after the
 | 
				
			||||||
 | 
					     parent structure is freed.  (CVE-2009-1379)
 | 
				
			||||||
 | 
					     [Daniel Mentz] 	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Handle non-blocking I/O properly in SSL_shutdown() call.
 | 
				
			||||||
 | 
					     [Darryl Miles <darryl-mailinglists@netbauds.net>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Add 2.5.4.* OIDs
 | 
					  *) Add 2.5.4.* OIDs
 | 
				
			||||||
     [Ilya O. <vrghost@gmail.com>]
 | 
					     [Ilya O. <vrghost@gmail.com>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Changes between 0.9.8k and 0.9.8l  [5 Nov 2009]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Disable renegotiation completely - this fixes a severe security
 | 
				
			||||||
 | 
					     problem (CVE-2009-3555) at the cost of breaking all
 | 
				
			||||||
 | 
					     renegotiation. Renegotiation can be re-enabled by setting
 | 
				
			||||||
 | 
					     SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
 | 
				
			||||||
 | 
					     run-time. This is really not recommended unless you know what
 | 
				
			||||||
 | 
					     you're doing.
 | 
				
			||||||
 | 
					     [Ben Laurie]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
 | 
					 Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Don't set val to NULL when freeing up structures, it is freed up by
 | 
					  *) Don't set val to NULL when freeing up structures, it is freed up by
 | 
				
			||||||
@@ -806,12 +1290,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  *) Support NumericString type for name components.
 | 
					  *) Support NumericString type for name components.
 | 
				
			||||||
     [Steve Henson]
 | 
					     [Steve Henson]
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  *) Allow CC in the environment to override the automatically chosen
 | 
					  *) Allow CC in the environment to override the automatically chosen
 | 
				
			||||||
     compiler. Note that nothing is done to ensure flags work with the
 | 
					     compiler. Note that nothing is done to ensure flags work with the
 | 
				
			||||||
     chosen compiler.
 | 
					     chosen compiler.
 | 
				
			||||||
     [Ben Laurie]
 | 
					     [Ben Laurie]
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
 Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
 | 
					 Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Properly check EVP_VerifyFinal() and similar return values
 | 
					  *) Properly check EVP_VerifyFinal() and similar return values
 | 
				
			||||||
@@ -852,6 +1336,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
 | 
					 Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *) Fix NULL pointer dereference if a DTLS server received
 | 
				
			||||||
 | 
					     ChangeCipherSpec as first record (CVE-2009-1386).
 | 
				
			||||||
 | 
					     [PR #1679]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Fix a state transitition in s3_srvr.c and d1_srvr.c
 | 
					  *) Fix a state transitition in s3_srvr.c and d1_srvr.c
 | 
				
			||||||
     (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
 | 
					     (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
 | 
				
			||||||
     [Nagendra Modadugu]
 | 
					     [Nagendra Modadugu]
 | 
				
			||||||
@@ -2255,19 +2743,6 @@
 | 
				
			|||||||
     differing sizes.
 | 
					     differing sizes.
 | 
				
			||||||
     [Richard Levitte]
 | 
					     [Richard Levitte]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Changes between 0.9.7m and 0.9.7n  [xx XXX xxxx]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  *) In the SSL/TLS server implementation, be strict about session ID
 | 
					 | 
				
			||||||
     context matching (which matters if an application uses a single
 | 
					 | 
				
			||||||
     external cache for different purposes).  Previously,
 | 
					 | 
				
			||||||
     out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
 | 
					 | 
				
			||||||
     set.  This did ensure strict client verification, but meant that,
 | 
					 | 
				
			||||||
     with applications using a single external cache for quite
 | 
					 | 
				
			||||||
     different requirements, clients could circumvent ciphersuite
 | 
					 | 
				
			||||||
     restrictions for a given session ID context by starting a session
 | 
					 | 
				
			||||||
     in a different context.
 | 
					 | 
				
			||||||
     [Bodo Moeller]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 Changes between 0.9.7l and 0.9.7m  [23 Feb 2007]
 | 
					 Changes between 0.9.7l and 0.9.7m  [23 Feb 2007]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *) Cleanse PEM buffers before freeing them since they may contain 
 | 
					  *) Cleanse PEM buffers before freeing them since they may contain 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -148,7 +148,7 @@ eric (about to go bushwalking for the 4 day easter break :-)
 | 
				
			|||||||
      This would tend to cause memory overwrites since SSLv3 has
 | 
					      This would tend to cause memory overwrites since SSLv3 has
 | 
				
			||||||
      a maximum packet size of 16k.  If your program uses
 | 
					      a maximum packet size of 16k.  If your program uses
 | 
				
			||||||
      buffers <= 16k, you would probably never see this problem.
 | 
					      buffers <= 16k, you would probably never see this problem.
 | 
				
			||||||
    - Fixed a new errors that were cause by malloc() not returning
 | 
					    - Fixed a few errors that were cause by malloc() not returning
 | 
				
			||||||
      0 initialised memory..
 | 
					      0 initialised memory..
 | 
				
			||||||
    - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using
 | 
					    - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using
 | 
				
			||||||
      SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing
 | 
					      SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										143
									
								
								Configure
									
									
									
									
									
								
							
							
						
						
									
										143
									
								
								Configure
									
									
									
									
									
								
							@@ -104,6 +104,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimenta
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
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 $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
 | 
				
			||||||
@@ -131,7 +133,7 @@ my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-
 | 
				
			|||||||
my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::void";
 | 
					my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::void";
 | 
				
			||||||
my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::::::::void";
 | 
					my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::::::::void";
 | 
				
			||||||
my $mips3_asm=":bn-mips3.o::::::::::::void";
 | 
					my $mips3_asm=":bn-mips3.o::::::::::::void";
 | 
				
			||||||
my $s390x_asm="s390xcpuid.o:bn-s390x.o s390x-mont.o::aes-s390x.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::void";
 | 
					my $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o::aes-s390x.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::void";
 | 
				
			||||||
my $armv4_asm=":bn_asm.o armv4-mont.o::aes_cbc.o aes-armv4.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::void";
 | 
					my $armv4_asm=":bn_asm.o armv4-mont.o::aes_cbc.o aes-armv4.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::void";
 | 
				
			||||||
my $ppc32_asm="ppccpuid.o:bn-ppc.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::";
 | 
					my $ppc32_asm="ppccpuid.o:bn-ppc.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::";
 | 
				
			||||||
my $ppc64_asm="ppccpuid.o:bn-ppc.o ppc-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::";
 | 
					my $ppc64_asm="ppccpuid.o:bn-ppc.o ppc-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::";
 | 
				
			||||||
@@ -161,18 +163,18 @@ my %table=(
 | 
				
			|||||||
# Our development configs
 | 
					# Our development configs
 | 
				
			||||||
"purify",	"purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
 | 
					"purify",	"purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
 | 
				
			||||||
"debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
 | 
					"debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
 | 
				
			||||||
"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 -DDEBUG_UNUSED -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:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -g3 -O2 -pipe::(unknown)::::::",
 | 
					"debug-ben-debug",	"gcc44:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O2 -pipe::(unknown)::::::",
 | 
				
			||||||
"debug-ben-no-opt",	"gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::",
 | 
					"debug-ben-no-opt",	"gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(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 -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion::-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::-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-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 BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"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}:elf: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-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 BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.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}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
				
			||||||
@@ -184,6 +186,9 @@ my %table=(
 | 
				
			|||||||
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_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 -DBN_CTX_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 -DBN_CTX_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 -DBN_CTX_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-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes_x86core.o aes_cbc.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
 | 
					"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes_x86core.o aes_cbc.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::elf: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}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
 | 
				
			||||||
"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
 | 
				
			||||||
@@ -191,8 +196,8 @@ my %table=(
 | 
				
			|||||||
"cc",		"cc:-O::(unknown)::::::",
 | 
					"cc",		"cc:-O::(unknown)::::::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####VOS Configurations
 | 
					####VOS Configurations
 | 
				
			||||||
"vos-gcc","gcc:-O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
 | 
					"vos-gcc","gcc:-O3 -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
 | 
				
			||||||
"debug-vos-gcc","gcc:-O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
 | 
					"debug-vos-gcc","gcc:-O0 -g -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Solaris x86 with GNU C setups
 | 
					#### Solaris x86 with GNU C setups
 | 
				
			||||||
# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
 | 
					# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
 | 
				
			||||||
@@ -209,11 +214,11 @@ 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}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
 | 
					"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}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
#### 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}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
 | 
					"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}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 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)",
 | 
				
			||||||
@@ -346,7 +351,7 @@ my %table=(
 | 
				
			|||||||
"linux-ia64",	"gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${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 DES_UNROLL DES_INT:${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 DES_INT:${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 DES_INT:${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 DES_RISC1 DES_INT:${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 DES_RISC1 DES_INT:${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}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
 | 
					"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}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
 | 
				
			||||||
"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):::64",
 | 
					"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):::64",
 | 
				
			||||||
#### 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
 | 
				
			||||||
@@ -400,7 +405,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)",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# BeOS
 | 
					# BeOS
 | 
				
			||||||
"beos-x86-r5",   "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
 | 
					"beos-x86-r5",   "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
 | 
				
			||||||
@@ -485,18 +491,21 @@ my %table=(
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
 | 
					# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
 | 
				
			||||||
"VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32",
 | 
					"VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32",
 | 
				
			||||||
"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.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:::wp-x86_64.o::ml64:win32",
 | 
					"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.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:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32",
 | 
				
			||||||
 | 
					"debug-VC-WIN64I","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32",
 | 
				
			||||||
 | 
					"debug-VC-WIN64A","cl:-W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.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:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32",
 | 
				
			||||||
# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
 | 
					# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
 | 
				
			||||||
# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
 | 
					# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
 | 
				
			||||||
"VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
 | 
					"VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
 | 
				
			||||||
# Unified CE target
 | 
					# Unified CE target
 | 
				
			||||||
 | 
					"debug-VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
 | 
				
			||||||
"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
 | 
					"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Borland C++ 4.5
 | 
					# Borland C++ 4.5
 | 
				
			||||||
"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
 | 
					"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# MinGW
 | 
					# MinGW
 | 
				
			||||||
"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::MINGW32:-lws2_32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
 | 
					"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
 | 
				
			||||||
# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll
 | 
					# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll
 | 
				
			||||||
# compiled with one compiler with application compiled with another
 | 
					# compiled with one compiler with application compiled with another
 | 
				
			||||||
# compiler. It's possible to engage Applink support in mingw64 build,
 | 
					# compiler. It's possible to engage Applink support in mingw64 build,
 | 
				
			||||||
@@ -504,7 +513,7 @@ my %table=(
 | 
				
			|||||||
# handling, one can't seriously consider its binaries for using with
 | 
					# handling, one can't seriously consider its binaries for using with
 | 
				
			||||||
# non-mingw64 run-time environment. And as mingw64 is always consistent
 | 
					# non-mingw64 run-time environment. And as mingw64 is always consistent
 | 
				
			||||||
# with itself, Applink is never engaged and can as well be omitted.
 | 
					# with itself, Applink is never engaged and can as well be omitted.
 | 
				
			||||||
"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE:::MINGW64:-lws2_32 -lgdi32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
 | 
					"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# UWIN 
 | 
					# UWIN 
 | 
				
			||||||
"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
 | 
					"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
 | 
				
			||||||
@@ -540,11 +549,11 @@ 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:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -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:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -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:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -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_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -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_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx: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_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx: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_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
					"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -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:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx: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:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-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:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### A/UX
 | 
					##### A/UX
 | 
				
			||||||
@@ -569,11 +578,16 @@ my %table=(
 | 
				
			|||||||
##### Compaq Non-Stop Kernel (Tandem)
 | 
					##### Compaq Non-Stop Kernel (Tandem)
 | 
				
			||||||
"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
 | 
					"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# uClinux
 | 
				
			||||||
 | 
					"uClinux-dist","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):BN_LLONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
 | 
				
			||||||
 | 
					"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
 | 
					my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
 | 
				
			||||||
		    VC-NT VC-CE VC-WIN32
 | 
							    debug-VC-WIN64I debug-VC-WIN64A
 | 
				
			||||||
		    BC-32 OS2-EMX
 | 
							    VC-NT VC-CE VC-WIN32 debug-VC-WIN32
 | 
				
			||||||
 | 
							    BC-32 
 | 
				
			||||||
		    netware-clib netware-clib-bsdsock
 | 
							    netware-clib netware-clib-bsdsock
 | 
				
			||||||
		    netware-libc netware-libc-bsdsock);
 | 
							    netware-libc netware-libc-bsdsock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -609,9 +623,10 @@ my $idx_arflags = $idx++;
 | 
				
			|||||||
my $idx_multilib = $idx++;
 | 
					my $idx_multilib = $idx++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $prefix="";
 | 
					my $prefix="";
 | 
				
			||||||
 | 
					my $libdir="";
 | 
				
			||||||
my $openssldir="";
 | 
					my $openssldir="";
 | 
				
			||||||
my $exe_ext="";
 | 
					my $exe_ext="";
 | 
				
			||||||
my $install_prefix="";
 | 
					my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
 | 
				
			||||||
my $cross_compile_prefix="";
 | 
					my $cross_compile_prefix="";
 | 
				
			||||||
my $no_threads=0;
 | 
					my $no_threads=0;
 | 
				
			||||||
my $threads=0;
 | 
					my $threads=0;
 | 
				
			||||||
@@ -654,7 +669,7 @@ my $perl;
 | 
				
			|||||||
my %disabled = ( # "what"         => "comment" [or special keyword "experimental"]
 | 
					my %disabled = ( # "what"         => "comment" [or special keyword "experimental"]
 | 
				
			||||||
		 "gmp"		  => "default",
 | 
							 "gmp"		  => "default",
 | 
				
			||||||
                 "jpake"          => "experimental",
 | 
					                 "jpake"          => "experimental",
 | 
				
			||||||
                 "mdc2"           => "default",
 | 
					                 "md2"            => "default",
 | 
				
			||||||
                 "rc5"            => "default",
 | 
					                 "rc5"            => "default",
 | 
				
			||||||
		 "rfc3779"	  => "default",
 | 
							 "rfc3779"	  => "default",
 | 
				
			||||||
                 "shared"         => "default",
 | 
					                 "shared"         => "default",
 | 
				
			||||||
@@ -666,8 +681,7 @@ my @experimental = ();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# This is what $depflags will look like with the above defaults
 | 
					# This is what $depflags will look like with the above defaults
 | 
				
			||||||
# (we need this to see if we should advise the user to run "make depend"):
 | 
					# (we need this to see if we should advise the user to run "make depend"):
 | 
				
			||||||
my $default_depflags = " -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE";
 | 
					my $default_depflags = " -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE";
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Explicit "no-..." options will be collected in %disabled along with the defaults.
 | 
					# Explicit "no-..." options will be collected in %disabled along with the defaults.
 | 
				
			||||||
# To remove something from %disabled, use "enable-foo" (unless it's experimental).
 | 
					# To remove something from %disabled, use "enable-foo" (unless it's experimental).
 | 
				
			||||||
@@ -765,6 +779,10 @@ PROCESS_ARGS:
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			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"))
 | 
				
			||||||
@@ -810,6 +828,10 @@ PROCESS_ARGS:
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				$prefix=$1;
 | 
									$prefix=$1;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								elsif (/^--libdir=(.*)$/)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									$libdir=$1;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			elsif (/^--openssldir=(.*)$/)
 | 
								elsif (/^--openssldir=(.*)$/)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				$openssldir=$1;
 | 
									$openssldir=$1;
 | 
				
			||||||
@@ -918,6 +940,12 @@ if (defined($disabled{"tls1"}))
 | 
				
			|||||||
	$disabled{"tlsext"} = "forced";
 | 
						$disabled{"tlsext"} = "forced";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (defined($disabled{"ec"}) || defined($disabled{"dsa"})
 | 
				
			||||||
 | 
					    || defined($disabled{"dh"}))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$disabled{"gost"} = "forced";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($target eq "TABLE") {
 | 
					if ($target eq "TABLE") {
 | 
				
			||||||
	foreach $target (sort keys %table) {
 | 
						foreach $target (sort keys %table) {
 | 
				
			||||||
		print_table_entry($target);
 | 
							print_table_entry($target);
 | 
				
			||||||
@@ -1019,6 +1047,9 @@ $prefix=$openssldir if $prefix 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 =~ /.\/$/;
 | 
				
			||||||
@@ -1060,10 +1091,19 @@ 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];
 | 
				
			||||||
my $multilib = $fields[$idx_multilib];
 | 
					my $multilib = $fields[$idx_multilib];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if $prefix/lib$multilib is not an existing directory, then
 | 
				
			||||||
 | 
					# assume that it's not searched by linker automatically, in
 | 
				
			||||||
 | 
					# which case adding $multilib suffix causes more grief than
 | 
				
			||||||
 | 
					# we're ready to tolerate, so don't...
 | 
				
			||||||
 | 
					$multilib="" if !-d "$prefix/lib$multilib";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$libdir="lib$multilib" if $libdir eq "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$cflags = "$cflags$exp_cflags";
 | 
					$cflags = "$cflags$exp_cflags";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# '%' in $lflags is used to split flags to "pre-" and post-flags
 | 
					# '%' in $lflags is used to split flags to "pre-" and post-flags
 | 
				
			||||||
@@ -1071,6 +1111,12 @@ my ($prelflags,$postlflags)=split('%',$lflags);
 | 
				
			|||||||
if (defined($postlflags))	{ $lflags=$postlflags;	}
 | 
					if (defined($postlflags))	{ $lflags=$postlflags;	}
 | 
				
			||||||
else				{ $lflags=$prelflags; undef $prelflags;	}
 | 
					else				{ $lflags=$prelflags; undef $prelflags;	}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						$cflags =~ s/\-mno\-cygwin\s*//;
 | 
				
			||||||
 | 
						$shared_ldflag =~ s/\-mno\-cygwin\s*//;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $no_shared_warn=0;
 | 
					my $no_shared_warn=0;
 | 
				
			||||||
my $no_user_cflags=0;
 | 
					my $no_user_cflags=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1218,7 +1264,14 @@ if ($zlib)
 | 
				
			|||||||
	$cflags = "-DZLIB $cflags";
 | 
						$cflags = "-DZLIB $cflags";
 | 
				
			||||||
	if (defined($disabled{"zlib-dynamic"}))
 | 
						if (defined($disabled{"zlib-dynamic"}))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		$lflags = "$lflags -lz";
 | 
							if (defined($withargs{"zlib-lib"}))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								$lflags = "$lflags -lz";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1407,6 +1460,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";
 | 
				
			||||||
@@ -1425,6 +1488,7 @@ while (<IN>)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	$sdirs = 0 unless /\\$/;
 | 
						$sdirs = 0 unless /\\$/;
 | 
				
			||||||
        s/engines // if (/^DIRS=/ && $disabled{"engine"});
 | 
					        s/engines // if (/^DIRS=/ && $disabled{"engine"});
 | 
				
			||||||
 | 
						s/ccgost// if (/^ENGDIRS=/ && $disabled{"gost"});
 | 
				
			||||||
	s/^VERSION=.*/VERSION=$version/;
 | 
						s/^VERSION=.*/VERSION=$version/;
 | 
				
			||||||
	s/^MAJOR=.*/MAJOR=$major/;
 | 
						s/^MAJOR=.*/MAJOR=$major/;
 | 
				
			||||||
	s/^MINOR=.*/MINOR=$minor/;
 | 
						s/^MINOR=.*/MINOR=$minor/;
 | 
				
			||||||
@@ -1436,20 +1500,22 @@ while (<IN>)
 | 
				
			|||||||
	s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
 | 
						s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
 | 
				
			||||||
	s/^MULTILIB=.*$/MULTILIB=$multilib/;
 | 
						s/^MULTILIB=.*$/MULTILIB=$multilib/;
 | 
				
			||||||
	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/;
 | 
				
			||||||
	s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
 | 
						s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
 | 
				
			||||||
	if ($cross_compile_prefix)
 | 
						if ($cross_compile_prefix)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		s/^CC=.*$/CROSS_COMPILE_PREFIX= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE_PREFIX\)$cc/;
 | 
							s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/;
 | 
				
			||||||
		s/^AR=\s*/AR= \$\(CROSS_COMPILE_PREFIX\)/;
 | 
							s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/;
 | 
				
			||||||
		s/^NM=\s*/NM= \$\(CROSS_COMPILE_PREFIX\)/;
 | 
							s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/;
 | 
				
			||||||
		s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE_PREFIX\)/;
 | 
							s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/;
 | 
				
			||||||
		s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE_PREFIX\)$cc/ if $cc eq "gcc";
 | 
							s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	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";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1622,10 +1688,7 @@ while (<IN>)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	elsif	(/^#define\s+ENGINESDIR/)
 | 
						elsif	(/^#define\s+ENGINESDIR/)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		# $foo is to become "$prefix/lib$multilib/engines";
 | 
							my $foo = "$prefix/$libdir/engines";
 | 
				
			||||||
		# as Makefile.org and engines/Makefile are adapted for
 | 
					 | 
				
			||||||
		# $multilib suffix.
 | 
					 | 
				
			||||||
		my $foo = "$prefix/lib/engines";
 | 
					 | 
				
			||||||
		$foo =~ s/\\/\\\\/g;
 | 
							$foo =~ s/\\/\\\\/g;
 | 
				
			||||||
		print OUT "#define ENGINESDIR \"$foo\"\n";
 | 
							print OUT "#define ENGINESDIR \"$foo\"\n";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1733,7 +1796,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;
 | 
				
			||||||
@@ -1741,11 +1804,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) {
 | 
				
			||||||
@@ -1970,23 +2033,23 @@ sub test_sanity
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		@fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
							@fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/)
 | 
							if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			$errorcnt++;
 | 
								$errorcnt++;
 | 
				
			||||||
			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
 | 
								print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
 | 
				
			||||||
			print STDERR "              in the previous field\n";
 | 
								print STDERR "              in the previous field\n";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/)
 | 
							elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			$errorcnt++;
 | 
								$errorcnt++;
 | 
				
			||||||
			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
 | 
								print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
 | 
				
			||||||
			print STDERR "              in the following field\n";
 | 
								print STDERR "              in the following field\n";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/)
 | 
							elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			$errorcnt++;
 | 
								$errorcnt++;
 | 
				
			||||||
			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
 | 
								print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
 | 
				
			||||||
			print STDERR "              valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n";
 | 
								print STDERR "              valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
 | 
						print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								FAQ
									
									
									
									
									
								
							@@ -52,6 +52,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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,6 +73,7 @@ OpenSSL  -  Frequently Asked Questions
 | 
				
			|||||||
* 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 does Valgrind complain about the use of uninitialized data?
 | 
				
			||||||
* Why doesn't a memory BIO work when a file does?
 | 
					* Why doesn't a memory BIO work when a file does?
 | 
				
			||||||
 | 
					* Where are the declarations and implementations of d2i_X509() etc?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===============================================================================
 | 
					===============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -78,7 +82,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.8k was released on Mar 25th, 2009.
 | 
					OpenSSL 1.0.0f was released on Jan 4th, 2012.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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:
 | 
				
			||||||
@@ -94,14 +98,17 @@ 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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
 | 
				
			||||||
@@ -127,7 +134,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
 | 
				
			||||||
@@ -459,7 +466,7 @@ administrators.
 | 
				
			|||||||
Other projects do have other policies so you can for example extract the CA
 | 
					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:
 | 
					bundle used by Mozilla and/or modssl as described in this article:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  http://www.mail-archive.com/modssl-users@modssl.org/msg16980.html
 | 
					  <URL: http://www.mail-archive.com/modssl-users@modssl.org/msg16980.html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[BUILD] =======================================================================
 | 
					[BUILD] =======================================================================
 | 
				
			||||||
@@ -501,7 +508,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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -512,7 +519,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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -705,6 +712,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?
 | 
				
			||||||
@@ -718,7 +765,7 @@ 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(), for all versions of OpenSSL up to and
 | 
					CRYPTO_set_id_callback(), for all versions of OpenSSL up to and
 | 
				
			||||||
including 0.9.8[abc...]. As of version 0.9.9, CRYPTO_set_id_callback()
 | 
					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 associated APIs are deprecated by CRYPTO_THREADID_set_callback()
 | 
				
			||||||
and friends. This is described in the threads(3) manpage.
 | 
					and friends. This is described in the threads(3) manpage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -964,4 +1011,15 @@ is needed. This must be done by calling:
 | 
				
			|||||||
See the manual pages for more details.
 | 
					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().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===============================================================================
 | 
					===============================================================================
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								INSTALL
									
									
									
									
									
								
							@@ -103,6 +103,12 @@
 | 
				
			|||||||
                define preprocessor symbols, specify additional libraries,
 | 
					                define preprocessor symbols, specify additional libraries,
 | 
				
			||||||
                library directories or other compiler options.
 | 
					                library directories or other compiler options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -DHAVE_CRYPTODEV Enable the BSD cryptodev engine even if we are not using
 | 
				
			||||||
 | 
							BSD. Useful if you are running ocf-linux or something
 | 
				
			||||||
 | 
							similar. Once enabled you can also enable the use of
 | 
				
			||||||
 | 
							cryptodev digests, which is usually slower unless you have
 | 
				
			||||||
 | 
							large amounts data. Use -DUSE_CRYPTODEV_DIGESTS to force
 | 
				
			||||||
 | 
							it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Installation in Detail
 | 
					 Installation in Detail
 | 
				
			||||||
 ----------------------
 | 
					 ----------------------
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								INSTALL.VMS
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								INSTALL.VMS
									
									
									
									
									
								
							@@ -71,7 +71,7 @@ the top to understand how to use them.  However, if you want to
 | 
				
			|||||||
compile all you can get, the simplest is to use MAKEVMS.COM in the top
 | 
					compile all you can get, the simplest is to use MAKEVMS.COM in the top
 | 
				
			||||||
directory.  The syntax is the following:
 | 
					directory.  The syntax is the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @MAKEVMS <option> <rsaref-p> <debug-p> [<compiler>]
 | 
					  @MAKEVMS <option> <bits> <debug-p> [<compiler>]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<option> must be one of the following:
 | 
					<option> must be one of the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,24 +87,11 @@ directory.  The syntax is the following:
 | 
				
			|||||||
      TEST      Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
 | 
					      TEST      Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
 | 
				
			||||||
      APPS      Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
 | 
					      APPS      Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<rsaref-p> must be one of the following:
 | 
					<bits> must be one of the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      RSAREF    compile using the RSAREF Library
 | 
					      ""        compile using default pointer size
 | 
				
			||||||
      NORSAREF  compile without using RSAREF
 | 
					      32        compile using 32 bit pointer size
 | 
				
			||||||
 | 
					      64        compile using 64 bit pointer size
 | 
				
			||||||
Note 0: The RSAREF library IS NO LONGER NEEDED.  The RSA patent
 | 
					 | 
				
			||||||
        expires September 20, 2000, and RSA Security chose to make
 | 
					 | 
				
			||||||
        the algorithm public domain two weeks before that.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Note 1: If you still want to use RSAREF, the library is NOT INCLUDED
 | 
					 | 
				
			||||||
        and you have to download it.  RSA Security doesn't carry it
 | 
					 | 
				
			||||||
        any more, but there are a number of places where you can find
 | 
					 | 
				
			||||||
        it.  You have to get the ".tar-Z" file as the ".zip" file
 | 
					 | 
				
			||||||
        doesn't have the directory structure stored.  You have to
 | 
					 | 
				
			||||||
        extract the file into the [.RSAREF] directory as that is where
 | 
					 | 
				
			||||||
        the scripts will look for the files.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Note 2: I have never done this, so I've no idea if it works or not.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<debug-p> must be one of the following:
 | 
					<debug-p> must be one of the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -117,12 +104,13 @@ Note 2: I have never done this, so I've no idea if it works or not.
 | 
				
			|||||||
      GNUC      For GNU C.
 | 
					      GNUC      For GNU C.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You will find the crypto library in [.xxx.EXE.CRYPTO], called LIBCRYPTO.OLB,
 | 
					You will find the crypto library in [.xxx.EXE.CRYPTO] (where xxx is VAX,
 | 
				
			||||||
where xxx is VAX or AXP.  You will find the SSL library in [.xxx.EXE.SSL],
 | 
					ALPHA or IA64), called SSL_LIBCRYPTO32.OLB or SSL_LIBCRYPTO.OLB depending
 | 
				
			||||||
named LIBSSL.OLB, and you will find a bunch of useful programs in
 | 
					on how it was built.  You will find the SSL library in [.xxx.EXE.SSL],
 | 
				
			||||||
[.xxx.EXE.APPS].  However, these shouldn't be used right off unless it's
 | 
					named SSL_LIBSSL32.OLB or SSL_LIBSSL.OLB, and you will find a bunch of
 | 
				
			||||||
just to test them.  For production use, make sure you install first, see
 | 
					useful programs in [.xxx.EXE.APPS].  However, these shouldn't be used
 | 
				
			||||||
Installation below.
 | 
					right off unless it's just to test them.  For production use, make sure
 | 
				
			||||||
 | 
					you install first, see Installation below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Note 1: Some programs in this package require a TCP/IP library.
 | 
					Note 1: Some programs in this package require a TCP/IP library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -170,12 +158,14 @@ Installation:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Installation is easy, just do the following:
 | 
					Installation is easy, just do the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @INSTALL <root>
 | 
					  @INSTALL <root> <bits>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<root> is the directory in which everything will be installed,
 | 
					<root> is the directory in which everything will be installed,
 | 
				
			||||||
subdirectories, libraries, header files, programs and startup command
 | 
					subdirectories, libraries, header files, programs and startup command
 | 
				
			||||||
procedures.
 | 
					procedures.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<bits> works the same way as for MAKEVMS.COM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
N.B.: INSTALL.COM builds a new directory structure, different from
 | 
					N.B.: INSTALL.COM builds a new directory structure, different from
 | 
				
			||||||
the directory tree where you have now build OpenSSL.
 | 
					the directory tree where you have now build OpenSSL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -196,6 +186,10 @@ following command procedures:
 | 
				
			|||||||
        sets up the symbols to the applications.  Should be called
 | 
					        sets up the symbols to the applications.  Should be called
 | 
				
			||||||
        from for example SYS$MANAGER:SYLOGIN.COM 
 | 
					        from for example SYS$MANAGER:SYLOGIN.COM 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  OPENSSL_UNDO.COM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						deassigns the logical names created with OPENSSL_STARTUP.COM.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The logical names that are set up are the following:
 | 
					The logical names that are set up are the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SSLROOT       a dotted concealed logical name pointing at the
 | 
					  SSLROOT       a dotted concealed logical name pointing at the
 | 
				
			||||||
@@ -203,7 +197,6 @@ The logical names that are set up are the following:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  SSLCERTS      Initially an empty directory, this is the default
 | 
					  SSLCERTS      Initially an empty directory, this is the default
 | 
				
			||||||
		location for certificate files.
 | 
							location for certificate files.
 | 
				
			||||||
  SSLMISC	Various scripts.
 | 
					 | 
				
			||||||
  SSLPRIVATE	Initially an empty directory, this is the default
 | 
					  SSLPRIVATE	Initially an empty directory, this is the default
 | 
				
			||||||
		location for private key files.
 | 
							location for private key files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -211,8 +204,9 @@ The logical names that are set up are the following:
 | 
				
			|||||||
		programs.
 | 
							programs.
 | 
				
			||||||
  SSLINCLUDE    Contains the header files needed if you want to
 | 
					  SSLINCLUDE    Contains the header files needed if you want to
 | 
				
			||||||
		compile programs with libcrypto or libssl.
 | 
							compile programs with libcrypto or libssl.
 | 
				
			||||||
  SSLLIB        Contains the OpenSSL library files (LIBCRYPTO.OLB
 | 
					  SSLLIB        Contains the OpenSSL library files themselves:
 | 
				
			||||||
		and LIBSSL.OLB) themselves.
 | 
					  		- SSL_LIBCRYPTO32.OLB and SSL_LIBSSL32.OLB or
 | 
				
			||||||
 | 
							- SSL_LIBCRYPTO.OLB and SSL_LIBSSL.OLB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  OPENSSL	Same as SSLINCLUDE.  This is because the standard
 | 
					  OPENSSL	Same as SSLINCLUDE.  This is because the standard
 | 
				
			||||||
		way to include OpenSSL header files from version
 | 
							way to include OpenSSL header files from version
 | 
				
			||||||
@@ -296,4 +290,4 @@ have any ideas.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
Richard Levitte <richard@levitte.org>
 | 
					Richard Levitte <richard@levitte.org>
 | 
				
			||||||
2000-02-27
 | 
					2000-02-27, 2011-03-18
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										43
									
								
								INSTALL.W32
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								INSTALL.W32
									
									
									
									
									
								
							@@ -27,7 +27,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- Netwide Assembler, a.k.a. NASM, available from http://nasm.sourceforge.net/
 | 
					- Netwide Assembler, a.k.a. NASM, available from http://nasm.sourceforge.net/
 | 
				
			||||||
  is required if you intend to utilize assembler modules. Note that NASM
 | 
					  is required if you intend to utilize assembler modules. Note that NASM
 | 
				
			||||||
  is the only supported assembler.
 | 
					  is now the only supported assembler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 If you are compiling from a tarball or a CVS snapshot then the Win32 files
 | 
					 If you are compiling from a tarball or a CVS snapshot then the Win32 files
 | 
				
			||||||
 may well be not up to date. This may mean that some "tweaking" is required to
 | 
					 may well be not up to date. This may mean that some "tweaking" is required to
 | 
				
			||||||
@@ -41,9 +41,9 @@
 | 
				
			|||||||
 C++, then you will need already mentioned Netwide Assembler binary,
 | 
					 C++, then you will need already mentioned Netwide Assembler binary,
 | 
				
			||||||
 nasmw.exe or nasm.exe, to be available on your %PATH%.
 | 
					 nasmw.exe or nasm.exe, to be available on your %PATH%.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Firstly you should run Configure:
 | 
					 Firstly you should run Configure with platform VC-WIN32:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 > perl Configure VC-WIN32 --prefix=c:/some/openssl/dir
 | 
					 > perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Where the prefix argument specifies where OpenSSL will be installed to.
 | 
					 Where the prefix argument specifies where OpenSSL will be installed to.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -56,6 +56,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 - If you don't want to use the assembly language files at all then run:
 | 
					 - If you don't want to use the assembly language files at all then run:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   > perl Configure VC-WIN32 no-asm --prefix=c:/some/openssl/dir
 | 
				
			||||||
   > ms\do_ms
 | 
					   > ms\do_ms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 If you get errors about things not having numbers assigned then check the
 | 
					 If you get errors about things not having numbers assigned then check the
 | 
				
			||||||
@@ -80,16 +81,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 There are various changes you can make to the Win32 compile
 | 
					 There are various changes you can make to the Win32 compile
 | 
				
			||||||
 environment. By default the library is not compiled with debugging
 | 
					 environment. By default the library is not compiled with debugging
 | 
				
			||||||
 symbols. If you add 'debug' to the mk1mf.pl lines in the do_* batch
 | 
					 symbols. If you use the platform debug-VC-WIN32 instead of VC-WIN32
 | 
				
			||||||
 file then debugging symbols will be compiled in. Note that mk1mf.pl
 | 
					 then debugging symbols will be compiled in.
 | 
				
			||||||
 expects the platform to be the last argument on the command line, so
 | 
					 | 
				
			||||||
 'debug' must appear before that, as all other options.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 By default in 1.0.0 OpenSSL will compile builtin ENGINES into the
 | 
				
			||||||
 By default in 0.9.8 OpenSSL will compile builtin ENGINES into the
 | 
					 separate shared librariesy. If you specify the "enable-static-engine"
 | 
				
			||||||
 libeay32.dll shared library. If you specify the "no-static-engine"
 | 
					 | 
				
			||||||
 option on the command line to Configure the shared library build
 | 
					 option on the command line to Configure the shared library build
 | 
				
			||||||
 (ms\ntdll.mak) will compile the engines as separate DLLs.
 | 
					 (ms\ntdll.mak) will compile the engines into libeay32.dll instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 The default Win32 environment is to leave out any Windows NT specific
 | 
					 The default Win32 environment is to leave out any Windows NT specific
 | 
				
			||||||
 features.
 | 
					 features.
 | 
				
			||||||
@@ -102,7 +100,6 @@
 | 
				
			|||||||
 ms\nt.mak
 | 
					 ms\nt.mak
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 Borland C++ builder 5
 | 
					 Borland C++ builder 5
 | 
				
			||||||
 ---------------------
 | 
					 ---------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -188,6 +185,15 @@
 | 
				
			|||||||
   required. Run the installers and do whatever magic they say it takes
 | 
					   required. Run the installers and do whatever magic they say it takes
 | 
				
			||||||
   to start MSYS bash shell with GNU tools on its PATH.
 | 
					   to start MSYS bash shell with GNU tools on its PATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   N.B. Since source tar-ball can contain symbolic links, it's essential
 | 
				
			||||||
 | 
					   that you use accompanying MSYS tar to unpack the source. It will
 | 
				
			||||||
 | 
					   either handle them in one way or another or fail to extract them,
 | 
				
			||||||
 | 
					   which does the trick too. Latter means that you may safely ignore all
 | 
				
			||||||
 | 
					   "cannot create symlink" messages, as they will be "re-created" at
 | 
				
			||||||
 | 
					   configure stage by copying corresponding files. Alternative programs
 | 
				
			||||||
 | 
					   were observed to create empty files instead, which results in build
 | 
				
			||||||
 | 
					   failure.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * Compile OpenSSL:
 | 
					 * Compile OpenSSL:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   $ ./config
 | 
					   $ ./config
 | 
				
			||||||
@@ -300,7 +306,18 @@
 | 
				
			|||||||
 desktop, which is not available to service processes. The toolkit is
 | 
					 desktop, which is not available to service processes. The toolkit is
 | 
				
			||||||
 designed to detect in which context it's currently executed, GUI,
 | 
					 designed to detect in which context it's currently executed, GUI,
 | 
				
			||||||
 console app or service, and act accordingly, namely whether or not to
 | 
					 console app or service, and act accordingly, namely whether or not to
 | 
				
			||||||
 actually make GUI calls.
 | 
					 actually make GUI calls. Additionally those who wish to
 | 
				
			||||||
 | 
					 /DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL and actually keep them
 | 
				
			||||||
 | 
					 off service process should consider implementing and exporting from
 | 
				
			||||||
 | 
					 .exe image in question own _OPENSSL_isservice not relying on USER32.DLL.
 | 
				
			||||||
 | 
					 E.g., on Windows Vista and later you could:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						__declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
 | 
				
			||||||
 | 
						{   DWORD sess;
 | 
				
			||||||
 | 
						    if (ProcessIdToSessionId(GetCurrentProcessId(),&sess))
 | 
				
			||||||
 | 
						        return sess==0;
 | 
				
			||||||
 | 
						    return FALSE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 If you link with OpenSSL .DLLs, then you're expected to include into
 | 
					 If you link with OpenSSL .DLLs, then you're expected to include into
 | 
				
			||||||
 your application code small "shim" snippet, which provides glue between
 | 
					 your application code small "shim" snippet, which provides glue between
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -12,7 +12,7 @@
 | 
				
			|||||||
  ---------------
 | 
					  ---------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 * Copyright (c) 1998-2008 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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										72
									
								
								Makefile.org
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								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
 | 
				
			||||||
@@ -109,6 +110,7 @@ ZLIB_INCLUDE=
 | 
				
			|||||||
LIBZLIB=
 | 
					LIBZLIB=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DIRS=   crypto ssl engines apps test tools
 | 
					DIRS=   crypto ssl engines apps test tools
 | 
				
			||||||
 | 
					ENGDIRS= ccgost
 | 
				
			||||||
SHLIBDIRS= crypto ssl
 | 
					SHLIBDIRS= crypto ssl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# dirs in crypto to build
 | 
					# dirs in crypto to build
 | 
				
			||||||
@@ -178,16 +180,18 @@ 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)' NM='$(NM)' RANLIB='$(RANLIB)'	\
 | 
							AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)'	\
 | 
				
			||||||
		CROSS_COMPILE_PREFIX='$(CROSS_COMPILE_PREFIX)'	\
 | 
							CROSS_COMPILE='$(CROSS_COMPILE)'	\
 | 
				
			||||||
		PERL='$(PERL)'					\
 | 
							PERL='$(PERL)' ENGDIRS='$(ENGDIRS)'		\
 | 
				
			||||||
		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)'			\
 | 
				
			||||||
		SHARED_LDFLAGS='$(SHARED_LDFLAGS)'		\
 | 
							SHARED_LDFLAGS='$(SHARED_LDFLAGS)'		\
 | 
				
			||||||
		KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)'	\
 | 
							KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)'	\
 | 
				
			||||||
 | 
							ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)'	\
 | 
				
			||||||
		EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)'	\
 | 
							EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)'	\
 | 
				
			||||||
		SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)'	\
 | 
							SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)'	\
 | 
				
			||||||
		PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)'	\
 | 
							PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)'	\
 | 
				
			||||||
@@ -297,7 +301,7 @@ build-shared: do_$(SHLIB_TARGET) link-shared
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
do_$(SHLIB_TARGET):
 | 
					do_$(SHLIB_TARGET):
 | 
				
			||||||
	@ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
 | 
						@ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
 | 
				
			||||||
		if [ "$(SHLIBDIRS)" = "ssl" -a -n "$(LIBKRB5)" ]; then \
 | 
							if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
 | 
				
			||||||
			libs="$(LIBKRB5) $$libs"; \
 | 
								libs="$(LIBKRB5) $$libs"; \
 | 
				
			||||||
		fi; \
 | 
							fi; \
 | 
				
			||||||
		$(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
 | 
							$(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
 | 
				
			||||||
@@ -311,7 +315,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'; \
 | 
				
			||||||
@@ -324,7 +328,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'; \
 | 
				
			||||||
@@ -337,7 +341,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'; \
 | 
				
			||||||
@@ -390,7 +394,7 @@ dclean:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
rehash: rehash.time
 | 
					rehash: rehash.time
 | 
				
			||||||
rehash.time: certs apps
 | 
					rehash.time: certs apps
 | 
				
			||||||
	@if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
 | 
						@if [ -z "$(CROSS_COMPILE)" ]; then \
 | 
				
			||||||
		(OPENSSL="`pwd`/util/opensslwrap.sh"; \
 | 
							(OPENSSL="`pwd`/util/opensslwrap.sh"; \
 | 
				
			||||||
		[ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
 | 
							[ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
 | 
				
			||||||
		OPENSSL_DEBUG_MEMORY=on; \
 | 
							OPENSSL_DEBUG_MEMORY=on; \
 | 
				
			||||||
@@ -403,8 +407,8 @@ test:   tests
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
tests: rehash
 | 
					tests: rehash
 | 
				
			||||||
	@(cd test && echo "testing..." && \
 | 
						@(cd test && echo "testing..." && \
 | 
				
			||||||
	$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on tests );
 | 
						$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
 | 
				
			||||||
	util/opensslwrap.sh version -a
 | 
						OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
report:
 | 
					report:
 | 
				
			||||||
	@$(PERL) util/selftest.pl
 | 
						@$(PERL) util/selftest.pl
 | 
				
			||||||
@@ -492,9 +496,9 @@ 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 \
 | 
				
			||||||
@@ -509,10 +513,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 \
 | 
				
			||||||
@@ -522,17 +526,17 @@ 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 ); \
 | 
				
			||||||
				if expr $(PLATFORM) : 'mingw' > /dev/null; then \
 | 
									if expr $(PLATFORM) : 'mingw' > /dev/null; then \
 | 
				
			||||||
				(	case $$i in \
 | 
									(	case $$i in \
 | 
				
			||||||
@@ -547,7 +551,7 @@ install_sw:
 | 
				
			|||||||
			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:'; \
 | 
				
			||||||
@@ -556,12 +560,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_html_docs:
 | 
					install_html_docs:
 | 
				
			||||||
	here="`pwd`"; \
 | 
						here="`pwd`"; \
 | 
				
			||||||
@@ -579,7 +583,7 @@ install_html_docs:
 | 
				
			|||||||
				grep -v $$filecase "^$$fn\$$" | \
 | 
									grep -v $$filecase "^$$fn\$$" | \
 | 
				
			||||||
				(cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
 | 
									(cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
 | 
				
			||||||
				 while read n; do \
 | 
									 while read n; do \
 | 
				
			||||||
					$$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
 | 
										PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
 | 
				
			||||||
				 done); \
 | 
									 done); \
 | 
				
			||||||
		done; \
 | 
							done; \
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
@@ -590,7 +594,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 \
 | 
				
			||||||
@@ -610,7 +614,7 @@ install_docs:
 | 
				
			|||||||
			(grep -v "[	]"; true) | \
 | 
								(grep -v "[	]"; true) | \
 | 
				
			||||||
			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
 | 
								(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
 | 
				
			||||||
			 while read n; do \
 | 
								 while read n; do \
 | 
				
			||||||
				$$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
 | 
									PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
 | 
				
			||||||
			 done); \
 | 
								 done); \
 | 
				
			||||||
	done; \
 | 
						done; \
 | 
				
			||||||
	set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
 | 
						set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
 | 
				
			||||||
@@ -627,7 +631,7 @@ install_docs:
 | 
				
			|||||||
			(grep -v "[	]"; true) | \
 | 
								(grep -v "[	]"; true) | \
 | 
				
			||||||
			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
 | 
								(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
 | 
				
			||||||
			 while read n; do \
 | 
								 while read n; do \
 | 
				
			||||||
				$$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
 | 
									PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
 | 
				
			||||||
			 done); \
 | 
								 done); \
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -135,7 +135,7 @@ LINK_SO_A_VIA_O=	\
 | 
				
			|||||||
  ALL=$$ALLSYMSFLAGS; ALLSYMSFLAGS=; NOALLSYMSFLAGS=; \
 | 
					  ALL=$$ALLSYMSFLAGS; ALLSYMSFLAGS=; NOALLSYMSFLAGS=; \
 | 
				
			||||||
  ( $(SET_X); \
 | 
					  ( $(SET_X); \
 | 
				
			||||||
    ld $(LDFLAGS) -r -o lib$(LIBNAME).o $$ALL lib$(LIBNAME).a $(LIBEXTRAS) ); \
 | 
					    ld $(LDFLAGS) -r -o lib$(LIBNAME).o $$ALL lib$(LIBNAME).a $(LIBEXTRAS) ); \
 | 
				
			||||||
  $(LINK_SO) && rm -f $(LIBNAME).o
 | 
					  $(LINK_SO) && rm -f lib$(LIBNAME).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINK_SO_A_UNPACKED=	\
 | 
					LINK_SO_A_UNPACKED=	\
 | 
				
			||||||
  UNPACKDIR=link_tmp.$$$$; rm -rf $$UNPACKDIR; mkdir $$UNPACKDIR; \
 | 
					  UNPACKDIR=link_tmp.$$$$; rm -rf $$UNPACKDIR; mkdir $$UNPACKDIR; \
 | 
				
			||||||
@@ -207,17 +207,29 @@ link_app.bsd:
 | 
				
			|||||||
	fi; $(LINK_APP)
 | 
						fi; $(LINK_APP)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# For Darwin AKA Mac OS/X (dyld)
 | 
					# For Darwin AKA Mac OS/X (dyld)
 | 
				
			||||||
# link_o.darwin produces .so, because we let it use dso_dlfcn module,
 | 
					# Originally link_o.darwin produced .so, because it was hard-coded
 | 
				
			||||||
# which has .so extension hard-coded. One can argue that one should
 | 
					# in dso_dlfcn module. At later point dso_dlfcn switched to .dylib
 | 
				
			||||||
# develop special dso module for MacOS X. At least manual encourages
 | 
					# extension in order to allow for run-time linking with vendor-
 | 
				
			||||||
# to use native NSModule(3) API and refers to dlfcn as termporary hack.
 | 
					# supplied shared libraries such as libz, so that link_o.darwin had
 | 
				
			||||||
 | 
					# to be harmonized with it. This caused minor controversy, because
 | 
				
			||||||
 | 
					# it was believed that dlopen can't be used to dynamically load
 | 
				
			||||||
 | 
					# .dylib-s, only so called bundle modules (ones linked with -bundle
 | 
				
			||||||
 | 
					# flag). The belief seems to be originating from pre-10.4 release,
 | 
				
			||||||
 | 
					# where dlfcn functionality was emulated by dlcompat add-on. In
 | 
				
			||||||
 | 
					# 10.4 dlopen was rewritten as native part of dyld and is documented
 | 
				
			||||||
 | 
					# to be capable of loading both dynamic libraries and bundles. In
 | 
				
			||||||
 | 
					# order to provide compatibility with pre-10.4 dlopen, modules are
 | 
				
			||||||
 | 
					# linked with -bundle flag, which makes .dylib extension misleading.
 | 
				
			||||||
 | 
					# It works, because dlopen is [and always was] extension-agnostic.
 | 
				
			||||||
 | 
					# Alternative to this heuristic approach is to develop specific
 | 
				
			||||||
 | 
					# MacOS X dso module relying on whichever "native" dyld interface.
 | 
				
			||||||
link_o.darwin:
 | 
					link_o.darwin:
 | 
				
			||||||
	@ $(CALC_VERSIONS); \
 | 
						@ $(CALC_VERSIONS); \
 | 
				
			||||||
	SHLIB=lib$(LIBNAME); \
 | 
						SHLIB=lib$(LIBNAME); \
 | 
				
			||||||
	SHLIB_SUFFIX=.so; \
 | 
						SHLIB_SUFFIX=.dylib; \
 | 
				
			||||||
	ALLSYMSFLAGS='-all_load'; \
 | 
						ALLSYMSFLAGS='-all_load'; \
 | 
				
			||||||
	NOALLSYMSFLAGS=''; \
 | 
						NOALLSYMSFLAGS=''; \
 | 
				
			||||||
	SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
 | 
						SHAREDFLAGS="$(CFLAGS) `echo $(SHARED_LDFLAGS) | sed s/dynamiclib/bundle/`"; \
 | 
				
			||||||
	if [ -n "$(LIBVERSION)" ]; then \
 | 
						if [ -n "$(LIBVERSION)" ]; then \
 | 
				
			||||||
		SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
 | 
							SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
@@ -238,7 +250,7 @@ link_a.darwin:
 | 
				
			|||||||
	if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
 | 
						if [ -n "$$SHLIB_SOVER_NODOT" ]; then \
 | 
				
			||||||
		SHAREDFLAGS="$$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
 | 
							SHAREDFLAGS="$$SHAREDFLAGS -compatibility_version $$SHLIB_SOVER_NODOT"; \
 | 
				
			||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	SHAREDFLAGS="$$SHAREDFLAGS -install_name $(INSTALLTOP)/lib/$$SHLIB$(SHLIB_EXT)"; \
 | 
						SHAREDFLAGS="$$SHAREDFLAGS -install_name $(INSTALLTOP)/$(LIBDIR)/$$SHLIB$(SHLIB_EXT)"; \
 | 
				
			||||||
	$(LINK_SO_A)
 | 
						$(LINK_SO_A)
 | 
				
			||||||
link_app.darwin:	# is there run-path on darwin?
 | 
					link_app.darwin:	# is there run-path on darwin?
 | 
				
			||||||
	$(LINK_APP)
 | 
						$(LINK_APP)
 | 
				
			||||||
@@ -281,7 +293,7 @@ link_a.cygwin:
 | 
				
			|||||||
	fi; \
 | 
						fi; \
 | 
				
			||||||
	dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
 | 
						dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
 | 
				
			||||||
	$(PERL) util/mkrc.pl $$dll_name | \
 | 
						$(PERL) util/mkrc.pl $$dll_name | \
 | 
				
			||||||
		$(CROSS_COMPILE_PREFIX)windres -o rc.o; \
 | 
							$(CROSS_COMPILE)windres -o rc.o; \
 | 
				
			||||||
	extras="$$extras rc.o"; \
 | 
						extras="$$extras rc.o"; \
 | 
				
			||||||
	ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
						ALLSYMSFLAGS='-Wl,--whole-archive'; \
 | 
				
			||||||
	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
						NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										85
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								NEWS
									
									
									
									
									
								
							@@ -5,13 +5,51 @@
 | 
				
			|||||||
  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.8k and OpenSSL 1.0:
 | 
					  Major changes between OpenSSL 1.0.0e and OpenSSL 1.0.0f:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for DTLS plaintext recovery attack CVE-2011-4108
 | 
				
			||||||
 | 
					      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 parameters are not NULL in GOST ENGINE CVE-2012-0027
 | 
				
			||||||
 | 
					      o Check for malformed RFC3779 data CVE-2011-4577
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 1.0.0d and OpenSSL 1.0.0e:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for CRL vulnerability issue CVE-2011-3207
 | 
				
			||||||
 | 
					      o Fix for ECDH crashes CVE-2011-3210
 | 
				
			||||||
 | 
					      o Protection against EC timing attacks.
 | 
				
			||||||
 | 
					      o Support ECDH ciphersuites for certificates using SHA2 algorithms.
 | 
				
			||||||
 | 
					      o Various DTLS fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 1.0.0c and OpenSSL 1.0.0d:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2011-0014
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 1.0.0b and OpenSSL 1.0.0c:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-4180
 | 
				
			||||||
 | 
					      o Fix for CVE-2010-4252
 | 
				
			||||||
 | 
					      o Fix mishandling of absent EC point format extension.
 | 
				
			||||||
 | 
					      o Fix various platform compilation issues.
 | 
				
			||||||
 | 
					      o Corrected fix for security issue CVE-2010-3864.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 1.0.0a and OpenSSL 1.0.0b:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-3864.
 | 
				
			||||||
 | 
					      o Fix for CVE-2010-2939
 | 
				
			||||||
 | 
					      o Fix WIN32 build system for GOST ENGINE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 1.0.0 and OpenSSL 1.0.0a:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      o Fix for security issue CVE-2010-1633.
 | 
				
			||||||
 | 
					      o GOST MAC and CFB fixes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Major changes between OpenSSL 0.9.8n and OpenSSL 1.0.0:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      o RFC3280 path validation: sufficient to process PKITS tests.
 | 
					      o RFC3280 path validation: sufficient to process PKITS tests.
 | 
				
			||||||
      o Integrated support for PVK files and keyblobs.
 | 
					      o Integrated support for PVK files and keyblobs.
 | 
				
			||||||
      o Change default private key format to PKCS#8.
 | 
					      o Change default private key format to PKCS#8.
 | 
				
			||||||
      o CMS support: able to process all examples in RFCXXXX
 | 
					      o CMS support: able to process all examples in RFC4134
 | 
				
			||||||
      o Streaming ASN1 encode support for PKCS#7 and CMS.
 | 
					      o Streaming ASN1 encode support for PKCS#7 and CMS.
 | 
				
			||||||
      o Multiple signer and signer add support for PKCS#7 and CMS.
 | 
					      o Multiple signer and signer add support for PKCS#7 and CMS.
 | 
				
			||||||
      o ASN1 printing support.
 | 
					      o ASN1 printing support.
 | 
				
			||||||
@@ -27,6 +65,49 @@
 | 
				
			|||||||
      o ecdsa-with-SHA224/256/384/512 signature types.
 | 
					      o ecdsa-with-SHA224/256/384/512 signature types.
 | 
				
			||||||
      o dsa-with-SHA224 and dsa-with-SHA256 signature types.
 | 
					      o dsa-with-SHA224 and dsa-with-SHA256 signature types.
 | 
				
			||||||
      o Opaque PRF Input TLS extension support.
 | 
					      o Opaque PRF Input TLS extension support.
 | 
				
			||||||
 | 
					      o Updated time routines to avoid OS limitations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  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:
 | 
					  Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 OpenSSL 1.0.0-dev XX xxx XXXX
 | 
					 OpenSSL 1.0.0f 4 Jan 2012
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Copyright (c) 1998-2008 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -112,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
 | 
				
			||||||
@@ -139,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:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -165,6 +166,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    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
 | 
				
			||||||
@@ -175,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;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								STATUS
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								STATUS
									
									
									
									
									
								
							@@ -1,10 +1,28 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  OpenSSL STATUS                           Last modified at
 | 
					  OpenSSL STATUS                           Last modified at
 | 
				
			||||||
  ______________                           $Date: 2009/03/30 11:33:03 $
 | 
					  ______________                           $Date: 2012/01/04 17:01:30 $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DEVELOPMENT STATE
 | 
					  DEVELOPMENT STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    o  OpenSSL 1.0:  Under development...
 | 
					    o  OpenSSL 1.1.0:  Under development...
 | 
				
			||||||
 | 
					    o  OpenSSL 1.0.1:  Under development...
 | 
				
			||||||
 | 
					    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.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.8h: Released on May       28th, 2008
 | 
				
			||||||
    o  OpenSSL 0.9.8g: Released on October   19th, 2007
 | 
					    o  OpenSSL 0.9.8g: Released on October   19th, 2007
 | 
				
			||||||
    o  OpenSSL 0.9.8f: Released on October   11th, 2007
 | 
					    o  OpenSSL 0.9.8f: Released on October   11th, 2007
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										383
									
								
								TABLE
									
									
									
									
									
								
							
							
						
						
									
										383
									
								
								TABLE
									
									
									
									
									
								
							@@ -496,6 +496,68 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** QNX6
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -DTERMIOS
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = 
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -lsocket
 | 
				
			||||||
 | 
					$bn_ops       = 
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = void
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= bsd-gcc-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** QNX6-i386
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -DL_ENDIAN -DTERMIOS -O2 -Wall
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = 
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -lsocket
 | 
				
			||||||
 | 
					$bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
				
			||||||
 | 
					$cpuid_obj    = x86cpuid.o
 | 
				
			||||||
 | 
					$bn_obj       = bn-586.o co-586.o x86-mont.o
 | 
				
			||||||
 | 
					$des_obj      = des-586.o crypt586.o
 | 
				
			||||||
 | 
					$aes_obj      = aes-586.o
 | 
				
			||||||
 | 
					$bf_obj       = bf-586.o
 | 
				
			||||||
 | 
					$md5_obj      = md5-586.o
 | 
				
			||||||
 | 
					$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
 | 
				
			||||||
 | 
					$cast_obj     = cast-586.o
 | 
				
			||||||
 | 
					$rc4_obj      = rc4-586.o
 | 
				
			||||||
 | 
					$rmd160_obj   = rmd-586.o
 | 
				
			||||||
 | 
					$rc5_obj      = rc5-586.o
 | 
				
			||||||
 | 
					$wp_obj       = wp_block.o wp-mmx.o
 | 
				
			||||||
 | 
					$cmll_obj     = cmll-x86.o
 | 
				
			||||||
 | 
					$perlasm_scheme = elf
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= bsd-gcc-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** ReliantUNIX
 | 
					*** ReliantUNIX
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -KPIC -g -DTERMIOS -DB_ENDIAN
 | 
					$cflags       = -KPIC -g -DTERMIOS -DB_ENDIAN
 | 
				
			||||||
@@ -702,8 +764,8 @@ $rc4_obj      = rc4-x86_64.o
 | 
				
			|||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$wp_obj       = wp-x86_64.o
 | 
					$wp_obj       = wp-x86_64.o
 | 
				
			||||||
$cmll_obj     = 
 | 
					$cmll_obj     = cmll-x86_64.o cmll_misc.o
 | 
				
			||||||
$perlasm_scheme = ml64
 | 
					$perlasm_scheme = auto
 | 
				
			||||||
$dso_scheme   = win32
 | 
					$dso_scheme   = win32
 | 
				
			||||||
$shared_target= 
 | 
					$shared_target= 
 | 
				
			||||||
$shared_cflag = 
 | 
					$shared_cflag = 
 | 
				
			||||||
@@ -1149,7 +1211,7 @@ $multilib     =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** darwin-ppc-cc
 | 
					*** darwin-ppc-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -arch ppc -O3 -DB_ENDIAN
 | 
					$cflags       = -arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = MACOSX
 | 
					$sys_id       = MACOSX
 | 
				
			||||||
@@ -1216,7 +1278,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = MACOSX
 | 
					$sys_id       = MACOSX
 | 
				
			||||||
$lflags       = -Wl,-search_paths_first%
 | 
					$lflags       = -Wl,-search_paths_first%
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -1225,7 +1287,7 @@ $bf_obj       =
 | 
				
			|||||||
$md5_obj      = md5-x86_64.o
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
$cast_obj     = 
 | 
					$cast_obj     = 
 | 
				
			||||||
$rc4_obj      = rc4-x86_64.o
 | 
					$rc4_obj      = 
 | 
				
			||||||
$rmd160_obj   = 
 | 
					$rmd160_obj   = 
 | 
				
			||||||
$rc5_obj      = 
 | 
					$rc5_obj      = 
 | 
				
			||||||
$wp_obj       = wp-x86_64.o
 | 
					$wp_obj       = wp-x86_64.o
 | 
				
			||||||
@@ -1333,9 +1395,102 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-VC-WIN32
 | 
				
			||||||
 | 
					$cc           = cl
 | 
				
			||||||
 | 
					$cflags       = -W3 -WX -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = 
 | 
				
			||||||
 | 
					$sys_id       = WIN32
 | 
				
			||||||
 | 
					$lflags       = 
 | 
				
			||||||
 | 
					$bn_ops       = BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN RC4_INDEX MD2_INT
 | 
				
			||||||
 | 
					$cpuid_obj    = x86cpuid.o
 | 
				
			||||||
 | 
					$bn_obj       = bn-586.o co-586.o x86-mont.o
 | 
				
			||||||
 | 
					$des_obj      = des-586.o crypt586.o
 | 
				
			||||||
 | 
					$aes_obj      = aes-586.o
 | 
				
			||||||
 | 
					$bf_obj       = bf-586.o
 | 
				
			||||||
 | 
					$md5_obj      = md5-586.o
 | 
				
			||||||
 | 
					$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
 | 
				
			||||||
 | 
					$cast_obj     = cast-586.o
 | 
				
			||||||
 | 
					$rc4_obj      = rc4-586.o
 | 
				
			||||||
 | 
					$rmd160_obj   = rmd-586.o
 | 
				
			||||||
 | 
					$rc5_obj      = rc5-586.o
 | 
				
			||||||
 | 
					$wp_obj       = wp_block.o wp-mmx.o
 | 
				
			||||||
 | 
					$cmll_obj     = cmll-x86.o
 | 
				
			||||||
 | 
					$perlasm_scheme = win32n
 | 
				
			||||||
 | 
					$dso_scheme   = win32
 | 
				
			||||||
 | 
					$shared_target= 
 | 
				
			||||||
 | 
					$shared_cflag = 
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = 
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-VC-WIN64A
 | 
				
			||||||
 | 
					$cc           = cl
 | 
				
			||||||
 | 
					$cflags       = -W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = 
 | 
				
			||||||
 | 
					$sys_id       = WIN64A
 | 
				
			||||||
 | 
					$lflags       = 
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 | 
				
			||||||
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
 | 
					$bn_obj       = bn_asm.o x86_64-mont.o
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = wp-x86_64.o
 | 
				
			||||||
 | 
					$cmll_obj     = cmll-x86_64.o cmll_misc.o
 | 
				
			||||||
 | 
					$perlasm_scheme = auto
 | 
				
			||||||
 | 
					$dso_scheme   = win32
 | 
				
			||||||
 | 
					$shared_target= 
 | 
				
			||||||
 | 
					$shared_cflag = 
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = 
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-VC-WIN64I
 | 
				
			||||||
 | 
					$cc           = cl
 | 
				
			||||||
 | 
					$cflags       = -W3 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = 
 | 
				
			||||||
 | 
					$sys_id       = WIN64I
 | 
				
			||||||
 | 
					$lflags       = 
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 | 
				
			||||||
 | 
					$cpuid_obj    = ia64cpuid.o
 | 
				
			||||||
 | 
					$bn_obj       = ia64.o
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = aes_core.o aes_cbc.o aes-ia64.o
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = md5-ia64.o
 | 
				
			||||||
 | 
					$sha1_obj     = sha1-ia64.o sha256-ia64.o sha512-ia64.o
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = ias
 | 
				
			||||||
 | 
					$dso_scheme   = win32
 | 
				
			||||||
 | 
					$shared_target= 
 | 
				
			||||||
 | 
					$shared_cflag = 
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = 
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** debug-ben
 | 
					*** debug-ben
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe
 | 
					$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG_UNUSED -O2 -pedantic -Wall -Wshadow -Werror -pipe
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = (unknown)
 | 
					$thread_cflag = (unknown)
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
@@ -1365,8 +1520,8 @@ $arflags      =
 | 
				
			|||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** debug-ben-debug
 | 
					*** debug-ben-debug
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc44
 | 
				
			||||||
$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe
 | 
					$cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O2 -pipe
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = (unknown)
 | 
					$thread_cflag = (unknown)
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
@@ -1860,6 +2015,68 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-linux-generic32
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -Wall
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -ldl
 | 
				
			||||||
 | 
					$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = void
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-linux-generic64
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -Wall
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -ldl
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = void
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = 
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** debug-linux-ia32-aes
 | 
					*** debug-linux-ia32-aes
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 | 
					$cflags       = -DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 | 
				
			||||||
@@ -1953,6 +2170,37 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** debug-linux-x86_64
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g -Wall -DMD32_REG_T=int
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = -ldl
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = aes-x86_64.o
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = md5-x86_64.o
 | 
				
			||||||
 | 
					$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = rc4-x86_64.o
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = wp-x86_64.o
 | 
				
			||||||
 | 
					$cmll_obj     = cmll-x86_64.o cmll_misc.o
 | 
				
			||||||
 | 
					$perlasm_scheme = elf
 | 
				
			||||||
 | 
					$dso_scheme   = dlfcn
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = -m64
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** debug-rse
 | 
					*** debug-rse
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall
 | 
					$cflags       = -DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall
 | 
				
			||||||
@@ -2115,7 +2363,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -2177,7 +2425,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -2234,7 +2482,7 @@ $multilib     =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** debug-vos-gcc
 | 
					*** debug-vos-gcc
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG
 | 
					$cflags       = -O0 -g -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = (unknown)
 | 
					$thread_cflag = (unknown)
 | 
				
			||||||
$sys_id       = VOS
 | 
					$sys_id       = VOS
 | 
				
			||||||
@@ -3542,7 +3790,7 @@ $thread_cflag = -D_REENTRANT
 | 
				
			|||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = s390xcpuid.o
 | 
					$cpuid_obj    = s390xcap.o s390xcpuid.o
 | 
				
			||||||
$bn_obj       = bn-s390x.o s390x-mont.o
 | 
					$bn_obj       = bn-s390x.o s390x-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
$aes_obj      = aes-s390x.o
 | 
					$aes_obj      = aes-s390x.o
 | 
				
			||||||
@@ -3634,7 +3882,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -ldl
 | 
					$lflags       = -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -3691,11 +3939,11 @@ $multilib     = 64
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** mingw
 | 
					*** mingw
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall
 | 
					$cflags       = -mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = 
 | 
					$thread_cflag = -D_MT
 | 
				
			||||||
$sys_id       = MINGW32
 | 
					$sys_id       = MINGW32
 | 
				
			||||||
$lflags       = -lws2_32 -lgdi32
 | 
					$lflags       = -lws2_32 -lgdi32 -lcrypt32
 | 
				
			||||||
$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
 | 
				
			||||||
$cpuid_obj    = x86cpuid.o
 | 
					$cpuid_obj    = x86cpuid.o
 | 
				
			||||||
$bn_obj       = bn-586.o co-586.o x86-mont.o
 | 
					$bn_obj       = bn-586.o co-586.o x86-mont.o
 | 
				
			||||||
@@ -3724,9 +3972,9 @@ $multilib     =
 | 
				
			|||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE
 | 
					$cflags       = -mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = 
 | 
					$thread_cflag = -D_MT
 | 
				
			||||||
$sys_id       = MINGW64
 | 
					$sys_id       = MINGW64
 | 
				
			||||||
$lflags       = -lws2_32 -lgdi32
 | 
					$lflags       = -lws2_32 -lgdi32 -lcrypt32
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 | 
					$bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
@@ -4247,37 +4495,6 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** qnx6
 | 
					 | 
				
			||||||
$cc           = cc
 | 
					 | 
				
			||||||
$cflags       = -DL_ENDIAN -DTERMIOS
 | 
					 | 
				
			||||||
$unistd       = 
 | 
					 | 
				
			||||||
$thread_cflag = (unknown)
 | 
					 | 
				
			||||||
$sys_id       = 
 | 
					 | 
				
			||||||
$lflags       = -lsocket
 | 
					 | 
				
			||||||
$bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 | 
					 | 
				
			||||||
$cpuid_obj    = 
 | 
					 | 
				
			||||||
$bn_obj       = 
 | 
					 | 
				
			||||||
$des_obj      = 
 | 
					 | 
				
			||||||
$aes_obj      = 
 | 
					 | 
				
			||||||
$bf_obj       = 
 | 
					 | 
				
			||||||
$md5_obj      = 
 | 
					 | 
				
			||||||
$sha1_obj     = 
 | 
					 | 
				
			||||||
$cast_obj     = 
 | 
					 | 
				
			||||||
$rc4_obj      = 
 | 
					 | 
				
			||||||
$rmd160_obj   = 
 | 
					 | 
				
			||||||
$rc5_obj      = 
 | 
					 | 
				
			||||||
$wp_obj       = 
 | 
					 | 
				
			||||||
$cmll_obj     = 
 | 
					 | 
				
			||||||
$perlasm_scheme = 
 | 
					 | 
				
			||||||
$dso_scheme   = 
 | 
					 | 
				
			||||||
$shared_target= 
 | 
					 | 
				
			||||||
$shared_cflag = 
 | 
					 | 
				
			||||||
$shared_ldflag = 
 | 
					 | 
				
			||||||
$shared_extension = 
 | 
					 | 
				
			||||||
$ranlib       = 
 | 
					 | 
				
			||||||
$arflags      = 
 | 
					 | 
				
			||||||
$multilib     = 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*** rhapsody-ppc-cc
 | 
					*** rhapsody-ppc-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -O3 -DB_ENDIAN
 | 
					$cflags       = -O3 -DB_ENDIAN
 | 
				
			||||||
@@ -4688,7 +4905,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -4719,7 +4936,7 @@ $unistd       =
 | 
				
			|||||||
$thread_cflag = -D_REENTRANT
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
$sys_id       = 
 | 
					$sys_id       = 
 | 
				
			||||||
$lflags       = -lsocket -lnsl -ldl
 | 
					$lflags       = -lsocket -lnsl -ldl
 | 
				
			||||||
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 | 
				
			||||||
$cpuid_obj    = x86_64cpuid.o
 | 
					$cpuid_obj    = x86_64cpuid.o
 | 
				
			||||||
$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
					$bn_obj       = x86_64-gcc.o x86_64-mont.o
 | 
				
			||||||
$des_obj      = 
 | 
					$des_obj      = 
 | 
				
			||||||
@@ -4836,6 +5053,68 @@ $ranlib       =
 | 
				
			|||||||
$arflags      = 
 | 
					$arflags      = 
 | 
				
			||||||
$multilib     = 
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** uClinux-dist
 | 
				
			||||||
 | 
					$cc           = 
 | 
				
			||||||
 | 
					$cflags       = $(CFLAGS)
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = $(LDFLAGS) $(LDLIBS)
 | 
				
			||||||
 | 
					$bn_ops       = BN_LLONG
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = 
 | 
				
			||||||
 | 
					$dso_scheme   = 
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = -shared
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** uClinux-dist64
 | 
				
			||||||
 | 
					$cc           = 
 | 
				
			||||||
 | 
					$cflags       = $(CFLAGS)
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = -D_REENTRANT
 | 
				
			||||||
 | 
					$sys_id       = 
 | 
				
			||||||
 | 
					$lflags       = $(LDFLAGS) $(LDLIBS)
 | 
				
			||||||
 | 
					$bn_ops       = SIXTY_FOUR_BIT_LONG
 | 
				
			||||||
 | 
					$cpuid_obj    = 
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$aes_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$wp_obj       = 
 | 
				
			||||||
 | 
					$cmll_obj     = 
 | 
				
			||||||
 | 
					$perlasm_scheme = 
 | 
				
			||||||
 | 
					$dso_scheme   = 
 | 
				
			||||||
 | 
					$shared_target= linux-shared
 | 
				
			||||||
 | 
					$shared_cflag = -fPIC
 | 
				
			||||||
 | 
					$shared_ldflag = -shared
 | 
				
			||||||
 | 
					$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 | 
				
			||||||
 | 
					$ranlib       = 
 | 
				
			||||||
 | 
					$arflags      = 
 | 
				
			||||||
 | 
					$multilib     = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** ultrix-cc
 | 
					*** ultrix-cc
 | 
				
			||||||
$cc           = cc
 | 
					$cc           = cc
 | 
				
			||||||
$cflags       = -std1 -O -Olimit 2500 -DL_ENDIAN
 | 
					$cflags       = -std1 -O -Olimit 2500 -DL_ENDIAN
 | 
				
			||||||
@@ -5024,7 +5303,7 @@ $multilib     =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*** vos-gcc
 | 
					*** vos-gcc
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN
 | 
					$cflags       = -O3 -Wall -DOPENSSL_SYSNAME_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN
 | 
				
			||||||
$unistd       = 
 | 
					$unistd       = 
 | 
				
			||||||
$thread_cflag = (unknown)
 | 
					$thread_cflag = (unknown)
 | 
				
			||||||
$sys_id       = VOS
 | 
					$sys_id       = VOS
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										67
									
								
								VMS/install-vms.com
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										67
									
								
								VMS/install-vms.com
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					$! install-vms.com -- Installs the files in a given directory tree
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Author: Richard Levitte <richard@levitte.org>
 | 
				
			||||||
 | 
					$! Time of creation: 23-MAY-1998 19:22
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! P1	root of the directory tree
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Announce/identify.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment( "procedure")
 | 
				
			||||||
 | 
					$ write sys$output "@@@ "+ -
 | 
				
			||||||
 | 
					   f$parse( proc, , , "name")+ f$parse( proc, , , "type")
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ on error then goto tidy
 | 
				
			||||||
 | 
					$ on control_c then goto tidy
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if p1 .eqs. ""
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   write sys$output "First argument missing."
 | 
				
			||||||
 | 
					$   write sys$output -
 | 
				
			||||||
 | 
					     "Should be the directory where you want things installed."
 | 
				
			||||||
 | 
					$   exit
 | 
				
			||||||
 | 
					$ 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_dev = f$parse( root, , , "device", "syntax_only")
 | 
				
			||||||
 | 
					$ root_dir = f$parse( root, , , "directory", "syntax_only") - -
 | 
				
			||||||
 | 
					   "[000000." - "][" - "[" - "]"
 | 
				
			||||||
 | 
					$ root = root_dev + "[" + root_dir
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
 | 
					$ define /nolog wrk_sslroot 'root'.] /translation_attributes = concealed
 | 
				
			||||||
 | 
					$ define /nolog wrk_sslinclude wrk_sslroot:[include]
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
 | 
					$ if f$parse( "wrk_sslroot:[000000]") .eqs. "" then -
 | 
				
			||||||
 | 
					   create /directory /log wrk_sslroot:[000000]
 | 
				
			||||||
 | 
					$ if f$parse( "wrk_sslinclude:") .eqs. "" then -
 | 
				
			||||||
 | 
					   create /directory /log wrk_sslinclude:
 | 
				
			||||||
 | 
					$ if f$parse( "wrk_sslroot:[vms]") .eqs. "" then -
 | 
				
			||||||
 | 
					   create /directory /log wrk_sslroot:[vms]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ copy /log /protection = world:re openssl_startup.com wrk_sslroot:[vms]
 | 
				
			||||||
 | 
					$ copy /log /protection = world:re openssl_undo.com wrk_sslroot:[vms]
 | 
				
			||||||
 | 
					$ copy /log /protection = world:re openssl_utils.com wrk_sslroot:[vms]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ tidy:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ call deass wrk_sslroot
 | 
				
			||||||
 | 
					$ call deass wrk_sslinclude
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ exit
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ deass: subroutine
 | 
				
			||||||
 | 
					$ if (f$trnlnm( p1, "LNM$PROCESS") .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   deassign /process 'p1'
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$ endsubroutine
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
@@ -1,72 +0,0 @@
 | 
				
			|||||||
$! INSTALL.COM -- Installs the files in a given directory tree
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Author: Richard Levitte <richard@levitte.org>
 | 
					 | 
				
			||||||
$! Time of creation: 23-MAY-1998 19:22
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! P1	root of the directory tree
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$	IF P1 .EQS. ""
 | 
					 | 
				
			||||||
$	THEN
 | 
					 | 
				
			||||||
$	    WRITE SYS$OUTPUT "First argument missing."
 | 
					 | 
				
			||||||
$	    WRITE SYS$OUTPUT "Should be the directory where you want things installed."
 | 
					 | 
				
			||||||
$	    EXIT
 | 
					 | 
				
			||||||
$	ENDIF
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
					 | 
				
			||||||
$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
					 | 
				
			||||||
$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
					 | 
				
			||||||
		   - "[000000." - "][" - "[" - "]"
 | 
					 | 
				
			||||||
$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	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_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 -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
					 | 
				
			||||||
$	IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLINCLUDE:
 | 
					 | 
				
			||||||
$	IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLROOT:[VMS]
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	IF F$SEARCH("WRK_SSLINCLUDE:vms_idhacks.h") .NES. "" THEN -
 | 
					 | 
				
			||||||
	   DELETE WRK_SSLINCLUDE:vms_idhacks.h;*
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	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 SF "$! Startup file for Openssl 0.9.2-RL 15-Mar-1999"
 | 
					 | 
				
			||||||
$	WRITE SF "$!"
 | 
					 | 
				
			||||||
$	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 "$!"
 | 
					 | 
				
			||||||
$	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 "$!"
 | 
					 | 
				
			||||||
$	WRITE SF "$	ARCH = ""VAX"""
 | 
					 | 
				
			||||||
$	WRITE SF "$	IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA"""
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLROOT		",ROOT,".] /TRANS=CONC"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLLIB		SSLROOT:['ARCH'_LIB]"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLINCLUDE	SSLROOT:[INCLUDE]"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLEXE		SSLROOT:['ARCH'_EXE]"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLCERTS	SSLROOT:[CERTS]"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	SSLPRIVATE	SSLROOT:[PRIVATE]"
 | 
					 | 
				
			||||||
$	WRITE SF "$"
 | 
					 | 
				
			||||||
$	WRITE SF "$!	This is program can include <openssl/{foo}.h>"
 | 
					 | 
				
			||||||
$	WRITE SF "$	DEFINE/NOLOG'P1	OPENSSL		SSLINCLUDE:"
 | 
					 | 
				
			||||||
$	WRITE SF "$"
 | 
					 | 
				
			||||||
$	WRITE SF "$	IF F$SEARCH(""SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"") .NES."""" THEN -"
 | 
					 | 
				
			||||||
$	WRITE SF "	   @SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
 | 
					 | 
				
			||||||
$	WRITE SF "$"
 | 
					 | 
				
			||||||
$	WRITE SF "$	EXIT"
 | 
					 | 
				
			||||||
$	CLOSE SF
 | 
					 | 
				
			||||||
$	SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	COPY OPENSSL_UTILS.COM WRK_SSLROOT:[VMS]/LOG
 | 
					 | 
				
			||||||
$	SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_UTILS.COM
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	EXIT
 | 
					 | 
				
			||||||
							
								
								
									
										276
									
								
								VMS/mkshared.com
									
									
									
									
									
								
							
							
						
						
									
										276
									
								
								VMS/mkshared.com
									
									
									
									
									
								
							@@ -1,77 +1,168 @@
 | 
				
			|||||||
$! MKSHARED.COM -- script to created shareable images on VMS
 | 
					$! MKSHARED.COM -- Create shareable images.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! No command line parameters.  This should be run at the start of the source
 | 
					$! P1: "64" for 64-bit pointers.
 | 
				
			||||||
$! tree (the same directory where one finds INSTALL.VMS).
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Input:	[.UTIL]LIBEAY.NUM,[.AXP.EXE.CRYPTO]LIBCRYPTO.OLB
 | 
					$! P2: Zlib object library path (optional).
 | 
				
			||||||
$!		[.UTIL]SSLEAY.NUM,[.AXP.EXE.SSL]LIBSSL.OLB
 | 
					$!
 | 
				
			||||||
$! Output:	[.AXP.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
 | 
					$! Input:	[.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO[32].OLB
 | 
				
			||||||
$!		[.AXP.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
 | 
					$!		[.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]SSL_LIBSSL[32].OLB
 | 
				
			||||||
 | 
					$!		[.CRYPTO.xxx]OPENSSLCONF.H
 | 
				
			||||||
 | 
					$! Output:	[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO_SHR[32].OPT,.MAP,.EXE
 | 
				
			||||||
 | 
					$!		[.xxx.EXE.SSL]SSL_LIBSSL_SRH[32].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.
 | 
				
			||||||
$! ===========================================================================
 | 
					$! ===========================================================================
 | 
				
			||||||
$
 | 
					$!
 | 
				
			||||||
 | 
					$! Announce/identify.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment( "procedure")
 | 
				
			||||||
 | 
					$ write sys$output "@@@ "+ -
 | 
				
			||||||
 | 
					   f$parse( proc, , , "name")+ f$parse( proc, , , "type")
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Save the original default device:[directory].
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ def_orig = f$environment( "default")
 | 
				
			||||||
 | 
					$ on error then goto tidy
 | 
				
			||||||
 | 
					$ on control_c then goto tidy
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! SET DEFAULT to the main kit directory.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment("procedure")
 | 
				
			||||||
 | 
					$ proc = f$parse( "A.;", proc)- "A.;"
 | 
				
			||||||
 | 
					$ set default 'proc'
 | 
				
			||||||
 | 
					$ set default [-]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$! ----- Prepare info for processing: version number and file info
 | 
					$! ----- Prepare info for processing: version number and file info
 | 
				
			||||||
$ gosub read_version_info
 | 
					$ gosub read_version_info
 | 
				
			||||||
$ if libver .eqs. ""
 | 
					$ if libver .eqs. ""
 | 
				
			||||||
$ then
 | 
					$ then
 | 
				
			||||||
$   write sys$error "ERROR: Couldn't find any library version info..."
 | 
					$   write sys$error "ERROR: Couldn't find any library version info..."
 | 
				
			||||||
$   exit
 | 
					$   go to tidy:
 | 
				
			||||||
$ endif
 | 
					$ endif
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$ if f$getsyi("CPU") .ge. 128
 | 
					$ if (f$getsyi("cpu") .lt. 128)
 | 
				
			||||||
$ then
 | 
					$ then
 | 
				
			||||||
$   libid  = "Crypto"
 | 
					$   arch_vax = 1
 | 
				
			||||||
$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
					$   arch = "VAX"
 | 
				
			||||||
$   libdir = "[.AXP.EXE.CRYPTO]"
 | 
					 | 
				
			||||||
$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
					 | 
				
			||||||
$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
					 | 
				
			||||||
$   libmap = "''libdir'LIBCRYPTO.MAP"
 | 
					 | 
				
			||||||
$   libgoal= "''libdir'LIBCRYPTO.EXE"
 | 
					 | 
				
			||||||
$   libref = ""
 | 
					 | 
				
			||||||
$   gosub create_axp_shr
 | 
					 | 
				
			||||||
$   libid  = "SSL"
 | 
					 | 
				
			||||||
$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
					 | 
				
			||||||
$   libdir = "[.AXP.EXE.SSL]"
 | 
					 | 
				
			||||||
$   libolb = "''libdir'LIBSSL.OLB"
 | 
					 | 
				
			||||||
$   libopt = "''libdir'LIBSSL.OPT"
 | 
					 | 
				
			||||||
$   libmap = "''libdir'LIBSSL.MAP"
 | 
					 | 
				
			||||||
$   libgoal= "''libdir'LIBSSL.EXE"
 | 
					 | 
				
			||||||
$   libref = "[.AXP.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
					 | 
				
			||||||
$   gosub create_axp_shr
 | 
					 | 
				
			||||||
$ else
 | 
					$ else
 | 
				
			||||||
 | 
					$   arch_vax = 0
 | 
				
			||||||
 | 
					$   arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
 | 
				
			||||||
 | 
					$   if (arch .eqs. "") then arch = "UNK"
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ archd = arch
 | 
				
			||||||
 | 
					$ lib32 = "32"
 | 
				
			||||||
 | 
					$ shr = "SHR32"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (p1 .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   if (p1 .eqs. "64")
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     archd = arch+ "_64"
 | 
				
			||||||
 | 
					$     lib32 = ""
 | 
				
			||||||
 | 
					$     shr = "SHR"
 | 
				
			||||||
 | 
					$   else
 | 
				
			||||||
 | 
					$     if (p1 .nes. "32")
 | 
				
			||||||
 | 
					$     then
 | 
				
			||||||
 | 
					$       write sys$output "Second argument invalid."
 | 
				
			||||||
 | 
					$       write sys$output "It should be "32", "64", or nothing."
 | 
				
			||||||
 | 
					$       exit
 | 
				
			||||||
 | 
					$     endif
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! ----- Prepare info for processing: disabled algorithms info
 | 
				
			||||||
 | 
					$ gosub read_disabled_algorithms_info
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ ZLIB = p2
 | 
				
			||||||
 | 
					$ zlib_lib = ""
 | 
				
			||||||
 | 
					$ if (ZLIB .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   file2 = f$parse( ZLIB, "libz.olb", , , "syntax_only")
 | 
				
			||||||
 | 
					$   if (f$search( file2) .eqs. "")
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     write sys$output ""
 | 
				
			||||||
 | 
					$     write sys$output "The Option ", ZLIB, " Is Invalid."
 | 
				
			||||||
 | 
					$     write sys$output "    Can't find library: ''file2'"
 | 
				
			||||||
 | 
					$     write sys$output ""
 | 
				
			||||||
 | 
					$     goto tidy
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$   zlib_lib = ", ''file2' /library"
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (arch_vax)
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
$   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 = "[.''ARCHD'.EXE.CRYPTO]"
 | 
				
			||||||
$   libmar = "''libdir'LIBCRYPTO.MAR"
 | 
					$   libmar = "''libdir'SSL_LIBCRYPTO_''shr'.MAR"
 | 
				
			||||||
$   libolb = "''libdir'LIBCRYPTO.OLB"
 | 
					$   libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBCRYPTO.OPT"
 | 
					$   libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT"
 | 
				
			||||||
$   libobj = "''libdir'LIBCRYPTO.OBJ"
 | 
					$   libobj = "''libdir'SSL_LIBCRYPTO_''shr'.OBJ"
 | 
				
			||||||
$   libmap = "''libdir'LIBCRYPTO.MAP"
 | 
					$   libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP"
 | 
				
			||||||
$   libgoal= "''libdir'LIBCRYPTO.EXE"
 | 
					$   libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE"
 | 
				
			||||||
$   libref = ""
 | 
					$   libref = ""
 | 
				
			||||||
$   libvec = "LIBCRYPTO"
 | 
					$   libvec = "LIBCRYPTO"
 | 
				
			||||||
$   gosub create_vax_shr
 | 
					$   if f$search( libolb) .nes. "" then 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 = "[.''ARCHD'.EXE.SSL]"
 | 
				
			||||||
$   libmar = "''libdir'LIBSSL.MAR"
 | 
					$   libmar = "''libdir'SSL_LIBSSL_''shr'.MAR"
 | 
				
			||||||
$   libolb = "''libdir'LIBSSL.OLB"
 | 
					$   libolb = "''libdir'SSL_LIBSSL''lib32'.OLB"
 | 
				
			||||||
$   libopt = "''libdir'LIBSSL.OPT"
 | 
					$   libopt = "''libdir'SSL_LIBSSL_''shr'.OPT"
 | 
				
			||||||
$   libobj = "''libdir'LIBSSL.OBJ"
 | 
					$   libobj = "''libdir'SSL_LIBSSL_''shr'.OBJ"
 | 
				
			||||||
$   libmap = "''libdir'LIBSSL.MAP"
 | 
					$   libmap = "''libdir'SSL_LIBSSL_''shr'.MAP"
 | 
				
			||||||
$   libgoal= "''libdir'LIBSSL.EXE"
 | 
					$   libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE"
 | 
				
			||||||
$   libref = "[.VAX.EXE.CRYPTO]LIBCRYPTO.EXE"
 | 
					$   libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE"
 | 
				
			||||||
$   libvec = "LIBSSL"
 | 
					$   libvec = "LIBSSL"
 | 
				
			||||||
$   gosub create_vax_shr
 | 
					$   if f$search( libolb) .nes. "" then gosub create_vax_shr
 | 
				
			||||||
 | 
					$ else
 | 
				
			||||||
 | 
					$   libid  = "Crypto"
 | 
				
			||||||
 | 
					$   libnum = "[.UTIL]LIBEAY.NUM"
 | 
				
			||||||
 | 
					$   libdir = "[.''ARCHD'.EXE.CRYPTO]"
 | 
				
			||||||
 | 
					$   libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB"
 | 
				
			||||||
 | 
					$   libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT"
 | 
				
			||||||
 | 
					$   libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP"
 | 
				
			||||||
 | 
					$   libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE"
 | 
				
			||||||
 | 
					$   libref = ""
 | 
				
			||||||
 | 
					$   if f$search( libolb) .nes. "" then gosub create_nonvax_shr
 | 
				
			||||||
 | 
					$   libid  = "SSL"
 | 
				
			||||||
 | 
					$   libnum = "[.UTIL]SSLEAY.NUM"
 | 
				
			||||||
 | 
					$   libdir = "[.''ARCHD'.EXE.SSL]"
 | 
				
			||||||
 | 
					$   libolb = "''libdir'SSL_LIBSSL''lib32'.OLB"
 | 
				
			||||||
 | 
					$   libopt = "''libdir'SSL_LIBSSL_''shr'.OPT"
 | 
				
			||||||
 | 
					$   libmap = "''libdir'SSL_LIBSSL_''shr'.MAP"
 | 
				
			||||||
 | 
					$   libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE"
 | 
				
			||||||
 | 
					$   libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE"
 | 
				
			||||||
 | 
					$   if f$search( libolb) .nes. "" then gosub create_nonvax_shr
 | 
				
			||||||
$ endif
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ tidy:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Close any open files.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$trnlnm( "libnum", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
 | 
				
			||||||
 | 
					   close libnum
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$trnlnm( "mar", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
 | 
				
			||||||
 | 
					   close mar
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$trnlnm( "opt", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
 | 
				
			||||||
 | 
					   close opt
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$trnlnm( "vf", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
 | 
				
			||||||
 | 
					   close vf
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Restore the original default device:[directory].
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ set default 'def_orig'
 | 
				
			||||||
$ exit
 | 
					$ exit
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! ----- Soubroutines to actually build the shareable libraries
 | 
					$! ----- Subroutines 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,28 +188,29 @@ $! 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, " /library"
 | 
				
			||||||
$   if libref .nes. "" then write opt libref,"/SHARE"
 | 
					$   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 ")"
 | 
				
			||||||
$   write opt "GSMATCH=",libvmatch,",",libver
 | 
					$   write opt "GSMATCH=",libvmatch,",",libver
 | 
				
			||||||
$   close opt
 | 
					$   close opt
 | 
				
			||||||
$   link/map='libmap'/full/share='libgoal' 'libopt'/option
 | 
					$   link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options -
 | 
				
			||||||
 | 
					     'zlib_lib'
 | 
				
			||||||
$   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,11 +236,11 @@ $   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:
 | 
				
			||||||
$   open/write mar 'libmar'
 | 
					$   open /write mar 'libmar'
 | 
				
			||||||
$   type sys$input:/out=mar:
 | 
					$   type sys$input:/out=mar:
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; Transfer vector for VAX shareable image
 | 
					; Transfer vector for VAX shareable image
 | 
				
			||||||
@@ -183,10 +275,10 @@ $!   libwriter := write_vax_vtransfer_entry
 | 
				
			|||||||
$!   gosub read_func_num
 | 
					$!   gosub read_func_num
 | 
				
			||||||
$   write mar "	.END"
 | 
					$   write mar "	.END"
 | 
				
			||||||
$   close mar
 | 
					$   close mar
 | 
				
			||||||
$   open/write opt 'libopt'
 | 
					$   open /write opt 'libopt'
 | 
				
			||||||
$   write opt "identification=""",libid," ",libverstr,""""
 | 
					$   write opt "identification=""",libid," ",libverstr,""""
 | 
				
			||||||
$   write opt libobj
 | 
					$   write opt libobj
 | 
				
			||||||
$   write opt libolb,"/lib"
 | 
					$   write opt libolb, " /library"
 | 
				
			||||||
$   if libref .nes. "" then write opt libref,"/SHARE"
 | 
					$   if libref .nes. "" then write opt libref,"/SHARE"
 | 
				
			||||||
$   type sys$input:/out=opt:
 | 
					$   type sys$input:/out=opt:
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
@@ -205,7 +297,8 @@ $   libwriter := write_vax_psect_attr
 | 
				
			|||||||
$   gosub read_func_num
 | 
					$   gosub read_func_num
 | 
				
			||||||
$   close opt
 | 
					$   close opt
 | 
				
			||||||
$   macro/obj='libobj' 'libmar'
 | 
					$   macro/obj='libobj' 'libmar'
 | 
				
			||||||
$   link/map='libmap'/full/share='libgoal' 'libopt'/option
 | 
					$   link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options -
 | 
				
			||||||
 | 
					     'zlib_lib'
 | 
				
			||||||
$   return
 | 
					$   return
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$! The record writer routine for VAX functions
 | 
					$! The record writer routine for VAX functions
 | 
				
			||||||
@@ -227,9 +320,9 @@ $   return
 | 
				
			|||||||
$
 | 
					$
 | 
				
			||||||
$! ----- Common subroutines
 | 
					$! ----- Common subroutines
 | 
				
			||||||
$! -----
 | 
					$! -----
 | 
				
			||||||
$! The .num file reader.  This one has great responsability.
 | 
					$! The .num file reader.  This one has great responsibility.
 | 
				
			||||||
$ read_func_num:
 | 
					$ read_func_num:
 | 
				
			||||||
$   open libnum 'libnum'
 | 
					$   open /read libnum 'libnum'
 | 
				
			||||||
$   goto read_nums
 | 
					$   goto read_nums
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$ read_nums:
 | 
					$ read_nums:
 | 
				
			||||||
@@ -237,35 +330,46 @@ $   libentrynum=0
 | 
				
			|||||||
$   liblastentry:=false
 | 
					$   liblastentry:=false
 | 
				
			||||||
$   entrycount=0
 | 
					$   entrycount=0
 | 
				
			||||||
$   loop:
 | 
					$   loop:
 | 
				
			||||||
$     read/end=loop_end/err=loop_end libnum line
 | 
					$     read /end=loop_end /err=loop_end libnum line
 | 
				
			||||||
$     entrynum=f$int(f$element(1," ",f$edit(line,"COMPRESS,TRIM")))
 | 
					$     lin = f$edit( line, "COMPRESS,TRIM")
 | 
				
			||||||
$     entryinfo=f$element(2," ",f$edit(line,"COMPRESS,TRIM"))
 | 
					$!    Skip a "#" comment line.
 | 
				
			||||||
$     curentry=f$element(0," ",f$edit(line,"COMPRESS,TRIM"))
 | 
					$     if (f$extract( 0, 1, lin) .eqs. "#") then goto loop
 | 
				
			||||||
$     info_exist=f$element(0,":",entryinfo)
 | 
					$     entrynum = f$int(f$element( 1, " ", lin))
 | 
				
			||||||
$     info_platforms=","+f$element(1,":",entryinfo)+","
 | 
					$     entryinfo = f$element( 2, " ", lin)
 | 
				
			||||||
$     info_kind=f$element(2,":",entryinfo)
 | 
					$     curentry = f$element( 0, " ", lin)
 | 
				
			||||||
$     info_algorithms=","+f$element(3,":",entryinfo)+","
 | 
					$     info_exist = f$element( 0, ":", entryinfo)
 | 
				
			||||||
 | 
					$     info_platforms = ","+ f$element(1, ":", entryinfo)+ ","
 | 
				
			||||||
 | 
					$     info_kind = f$element( 2, ":", entryinfo)
 | 
				
			||||||
 | 
					$     info_algorithms = ","+ f$element( 3, ":", entryinfo)+ ","
 | 
				
			||||||
$     if info_exist .eqs. "NOEXIST" then goto loop
 | 
					$     if info_exist .eqs. "NOEXIST" then goto loop
 | 
				
			||||||
$     truesum = 0
 | 
					$     truesum = 0
 | 
				
			||||||
$     falsesum = 0
 | 
					$     falsesum = 0
 | 
				
			||||||
$     negatives = 1
 | 
					$     negatives = 1
 | 
				
			||||||
$     plat_i = 0
 | 
					$     plat_i = 0
 | 
				
			||||||
$     loop1:
 | 
					$     loop1:
 | 
				
			||||||
$       plat_entry = f$element(plat_i,",",info_platforms)
 | 
					$       plat_entry = f$element( plat_i, ",", info_platforms)
 | 
				
			||||||
$       plat_i = plat_i + 1
 | 
					$       plat_i = plat_i + 1
 | 
				
			||||||
$       if plat_entry .eqs. "" then goto loop1
 | 
					$       if plat_entry .eqs. "" then goto loop1
 | 
				
			||||||
$       if plat_entry .nes. ","
 | 
					$       if plat_entry .nes. ","
 | 
				
			||||||
$       then
 | 
					$       then
 | 
				
			||||||
$         if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0
 | 
					$         if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0
 | 
				
			||||||
$         if f$getsyi("CPU") .lt. 128
 | 
					$         if (arch_vax)
 | 
				
			||||||
$         then
 | 
					$         then
 | 
				
			||||||
$           if plat_entry .eqs. "EXPORT_VAR_AS_FUNCTION" then -
 | 
					$           if plat_entry .eqs. "EXPORT_VAR_AS_FUNCTION" then -
 | 
				
			||||||
$             truesum = truesum + 1
 | 
					$             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. -
 | 
				
			||||||
 | 
					            ((plat_entry .eqs. "ZLIB") .and. (ZLIB .nes. "")) .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:
 | 
				
			||||||
@@ -284,8 +388,7 @@ $	alg_i = alg_i + 1
 | 
				
			|||||||
$       if alg_entry .eqs. "" then goto loop2
 | 
					$       if alg_entry .eqs. "" then goto loop2
 | 
				
			||||||
$       if alg_entry .nes. ","
 | 
					$       if alg_entry .nes. ","
 | 
				
			||||||
$       then
 | 
					$       then
 | 
				
			||||||
$         if alg_entry .eqs. "KRB5" then goto loop ! Special for now
 | 
					$	  if disabled_algorithms - ("," + alg_entry + ",") .nes disabled_algorithms then goto loop
 | 
				
			||||||
$	  if alg_entry .eqs. "STATIC_ENGINE" then goto loop ! Special for now
 | 
					 | 
				
			||||||
$         if f$trnlnm("OPENSSL_NO_"+alg_entry) .nes. "" then goto loop
 | 
					$         if f$trnlnm("OPENSSL_NO_"+alg_entry) .nes. "" then goto loop
 | 
				
			||||||
$	  goto loop2
 | 
					$	  goto loop2
 | 
				
			||||||
$       endif
 | 
					$       endif
 | 
				
			||||||
@@ -328,7 +431,7 @@ $
 | 
				
			|||||||
$! The version number reader
 | 
					$! The version number reader
 | 
				
			||||||
$ read_version_info:
 | 
					$ read_version_info:
 | 
				
			||||||
$   libver = ""
 | 
					$   libver = ""
 | 
				
			||||||
$   open/read vf [.CRYPTO]OPENSSLV.H
 | 
					$   open /read vf [.CRYPTO]OPENSSLV.H
 | 
				
			||||||
$   loop_rvi:
 | 
					$   loop_rvi:
 | 
				
			||||||
$     read/err=endloop_rvi/end=endloop_rvi vf rvi_line
 | 
					$     read/err=endloop_rvi/end=endloop_rvi vf rvi_line
 | 
				
			||||||
$     if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then -
 | 
					$     if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then -
 | 
				
			||||||
@@ -352,3 +455,22 @@ $     endif
 | 
				
			|||||||
$   endloop_rvi:
 | 
					$   endloop_rvi:
 | 
				
			||||||
$   close vf
 | 
					$   close vf
 | 
				
			||||||
$   return
 | 
					$   return
 | 
				
			||||||
 | 
					$
 | 
				
			||||||
 | 
					$! The disabled algorithms reader
 | 
				
			||||||
 | 
					$ read_disabled_algorithms_info:
 | 
				
			||||||
 | 
					$   disabled_algorithms = ","
 | 
				
			||||||
 | 
					$   open /read cf [.CRYPTO.'ARCH']OPENSSLCONF.H
 | 
				
			||||||
 | 
					$   loop_rci:
 | 
				
			||||||
 | 
					$     read/err=endloop_rci/end=endloop_rci cf rci_line
 | 
				
			||||||
 | 
					$     rci_line = f$edit(rci_line,"TRIM,COMPRESS")
 | 
				
			||||||
 | 
					$     rci_ei = 0
 | 
				
			||||||
 | 
					$     if f$extract(0,9,rci_line) .eqs. "# define " then rci_ei = 2
 | 
				
			||||||
 | 
					$     if f$extract(0,8,rci_line) .eqs. "#define " then rci_ei = 1
 | 
				
			||||||
 | 
					$     if rci_ei .eq. 0 then goto loop_rci
 | 
				
			||||||
 | 
					$     rci_e = f$element(rci_ei," ",rci_line)
 | 
				
			||||||
 | 
					$     if f$extract(0,11,rci_e) .nes. "OPENSSL_NO_" then goto loop_rci
 | 
				
			||||||
 | 
					$     disabled_algorithms = disabled_algorithms + f$extract(11,999,rci_e) + ","
 | 
				
			||||||
 | 
					$     goto loop_rci
 | 
				
			||||||
 | 
					$   endloop_rci:
 | 
				
			||||||
 | 
					$   close cf
 | 
				
			||||||
 | 
					$   return
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										108
									
								
								VMS/openssl_startup.com
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										108
									
								
								VMS/openssl_startup.com
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Startup file for OpenSSL 1.x.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! 2011-03-05 SMS.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! This procedure must reside in the OpenSSL installation directory.
 | 
				
			||||||
 | 
					$! It will fail if it is copied to a different location.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! P1  qualifier(s) for DEFINE.  For example, "/SYSTEM" to get the
 | 
				
			||||||
 | 
					$!     logical names defined in the system logical name table.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! P2  "64", to use executables which were built with 64-bit pointers.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Good (default) and bad status values.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ status =    %x00010001 ! RMS$_NORMAL, normal successful completion.
 | 
				
			||||||
 | 
					$ rms_e_fnf = %x00018292 ! RMS$_FNF, file not found.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Prepare for problems.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ orig_dev_dir = f$environment( "DEFAULT")
 | 
				
			||||||
 | 
					$ on control_y then goto clean_up
 | 
				
			||||||
 | 
					$ on error then goto clean_up
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Determine hardware architecture.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$getsyi( "cpu") .lt. 128)
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   arch_name = "VAX"
 | 
				
			||||||
 | 
					$ else
 | 
				
			||||||
 | 
					$   arch_name = f$edit( f$getsyi( "arch_name"), "upcase")
 | 
				
			||||||
 | 
					$   if (arch_name .eqs. "") then arch_name = "UNK"
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (p2 .eqs. "64")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   arch_name_exe = arch_name+ "_64"
 | 
				
			||||||
 | 
					$ else
 | 
				
			||||||
 | 
					$   arch_name_exe = arch_name
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Derive the OpenSSL installation device:[directory] from the location
 | 
				
			||||||
 | 
					$! of this command procedure.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment( "procedure")
 | 
				
			||||||
 | 
					$ proc_dev_dir = f$parse( "A.;", proc, , , "no_conceal") - "A.;"
 | 
				
			||||||
 | 
					$ proc_dev = f$parse( proc_dev_dir, , , "device", "syntax_only")
 | 
				
			||||||
 | 
					$ proc_dir = f$parse( proc_dev_dir, , , "directory", "syntax_only") - -
 | 
				
			||||||
 | 
					   ".][000000"- "[000000."- "]["- "["- "]"
 | 
				
			||||||
 | 
					$ proc_dev_dir = proc_dev+ "["+ proc_dir+ "]"
 | 
				
			||||||
 | 
					$ set default 'proc_dev_dir'
 | 
				
			||||||
 | 
					$ set default [-]
 | 
				
			||||||
 | 
					$ ossl_dev_dir = f$environment( "default")
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Check existence of expected directories (to see if this procedure has
 | 
				
			||||||
 | 
					$! been moved away from its proper place).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if ((f$search( "certs.dir;1") .eqs. "") .or. -
 | 
				
			||||||
 | 
					   (f$search( "include.dir;1") .eqs. "") .or. -
 | 
				
			||||||
 | 
					   (f$search( "private.dir;1") .eqs. "") .or. -
 | 
				
			||||||
 | 
					   (f$search( "vms.dir;1") .eqs. ""))
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$    write sys$output -
 | 
				
			||||||
 | 
					      "   Can't find expected common OpenSSL directories in:"
 | 
				
			||||||
 | 
					$    write sys$output "   ''ossl_dev_dir'"
 | 
				
			||||||
 | 
					$    status = rms_e_fnf
 | 
				
			||||||
 | 
					$    goto clean_up
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if ((f$search( "''arch_name_exe'_exe.dir;1") .eqs. "") .or. -
 | 
				
			||||||
 | 
					   (f$search( "''arch_name'_lib.dir;1") .eqs. ""))
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$    write sys$output -
 | 
				
			||||||
 | 
					      "   Can't find expected architecture-specific OpenSSL directories in:"
 | 
				
			||||||
 | 
					$    write sys$output "   ''ossl_dev_dir'"
 | 
				
			||||||
 | 
					$    status = rms_e_fnf
 | 
				
			||||||
 | 
					$    goto clean_up
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! All seems well (enough).  Define the OpenSSL logical names.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ ossl_root = ossl_dev_dir- "]"+ ".]"
 | 
				
			||||||
 | 
					$ define /translation_attributes = concealed /nolog'p1 SSLROOT 'ossl_root'
 | 
				
			||||||
 | 
					$ define /nolog 'p1' SSLCERTS     sslroot:[certs]
 | 
				
			||||||
 | 
					$ define /nolog 'p1' SSLINCLUDE   sslroot:[include]
 | 
				
			||||||
 | 
					$ define /nolog 'p1' SSLPRIVATE   sslroot:[private]
 | 
				
			||||||
 | 
					$ define /nolog 'p1' SSLEXE       sslroot:['arch_name_exe'_exe]
 | 
				
			||||||
 | 
					$ define /nolog 'p1' SSLLIB       sslroot:['arch_name'_lib]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Defining OPENSSL lets a C program use "#include <openssl/{foo}.h>":
 | 
				
			||||||
 | 
					$ define /nolog 'p1' OPENSSL      SSLINCLUDE:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Run a site-specific procedure, if it exists.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if f$search( "sslroot:[vms]openssl_systartup.com") .nes."" then -
 | 
				
			||||||
 | 
					   @ sslroot:[vms]openssl_systartup.com
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Restore the original default dev:[dir] (if known).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ clean_up:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$type( orig_dev_dir) .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$    set default 'orig_dev_dir'
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ EXIT 'status'
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
							
								
								
									
										20
									
								
								VMS/openssl_undo.com
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								VMS/openssl_undo.com
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Deassign OpenSSL logical names.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ call deass "OPENSSL" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLCERTS" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLEXE" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLINCLUDE" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLLIB" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLPRIVATE" "''p1'"
 | 
				
			||||||
 | 
					$ call deass "SSLROOT" "''p1'"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ exit
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$deass: subroutine
 | 
				
			||||||
 | 
					$ if (f$trnlnm( p1) .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$    deassign 'p2' 'p1'
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$ endsubroutine
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										100
									
								
								apps/CA.com
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								apps/CA.com
									
									
									
									
									
								
							@@ -37,14 +37,25 @@ $ VERIFY = openssl + " verify"
 | 
				
			|||||||
$ X509   = openssl + " x509"
 | 
					$ X509   = openssl + " x509"
 | 
				
			||||||
$ PKCS12 = openssl + " pkcs12"
 | 
					$ PKCS12 = openssl + " pkcs12"
 | 
				
			||||||
$ echo   = "write sys$Output"
 | 
					$ echo   = "write sys$Output"
 | 
				
			||||||
 | 
					$ RET = 1
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ s = F$PARSE(F$ENVIRONMENT("DEFAULT"),"[]") - "].;"
 | 
					$! 2010-12-20 SMS.
 | 
				
			||||||
$ CATOP  := 's'.demoCA
 | 
					$! Use a concealed logical name to reduce command line lengths, to
 | 
				
			||||||
$ CAKEY  := ]cakey.pem
 | 
					$! avoid DCL errors on VAX:
 | 
				
			||||||
$ CACERT := ]cacert.pem
 | 
					$!     %DCL-W-TKNOVF, command element is too long - shorten
 | 
				
			||||||
 | 
					$! (Path segments like "openssl-1_0_1-stable-SNAP-20101217" accumulate
 | 
				
			||||||
 | 
					$! quickly.)
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ CATOP = F$PARSE( F$ENVIRONMENT( "DEFAULT"), "[]")- "].;"+ ".demoCA.]"
 | 
				
			||||||
 | 
					$ define /translation_attributes = concealed CATOP 'CATOP'
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ on error then goto clean_up
 | 
				
			||||||
 | 
					$ on control_y then goto clean_up
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ CAKEY  = "CATOP:[private]cakey.pem"
 | 
				
			||||||
 | 
					$ CACERT = "CATOP:[000000]cacert.pem"
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$ __INPUT := SYS$COMMAND
 | 
					$ __INPUT := SYS$COMMAND
 | 
				
			||||||
$ RET = 1
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ i = 1
 | 
					$ i = 1
 | 
				
			||||||
$opt_loop:
 | 
					$opt_loop:
 | 
				
			||||||
@@ -55,7 +66,7 @@ $
 | 
				
			|||||||
$ IF (prog_opt .EQS. "?" .OR. prog_opt .EQS. "-h" .OR. prog_opt .EQS. "-help") 
 | 
					$ IF (prog_opt .EQS. "?" .OR. prog_opt .EQS. "-h" .OR. prog_opt .EQS. "-help") 
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" 
 | 
					$   echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" 
 | 
				
			||||||
$   exit
 | 
					$   goto clean_up
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (prog_opt .EQS. "-input")
 | 
					$ IF (prog_opt .EQS. "-input")
 | 
				
			||||||
@@ -69,7 +80,7 @@ $!
 | 
				
			|||||||
$ IF (prog_opt .EQS. "-newcert")
 | 
					$ IF (prog_opt .EQS. "-newcert")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   ! Create a certificate.
 | 
					$   ! Create a certificate.
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   REQ -new -x509 -keyout newreq.pem -out newreq.pem 'DAYS'
 | 
					$   REQ -new -x509 -keyout newreq.pem -out newreq.pem 'DAYS'
 | 
				
			||||||
$   RET=$STATUS
 | 
					$   RET=$STATUS
 | 
				
			||||||
$   echo "Certificate (and private key) is in newreq.pem"
 | 
					$   echo "Certificate (and private key) is in newreq.pem"
 | 
				
			||||||
@@ -79,7 +90,7 @@ $!
 | 
				
			|||||||
$ IF (prog_opt .EQS. "-newreq")
 | 
					$ IF (prog_opt .EQS. "-newreq")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   ! Create a certificate request
 | 
					$   ! Create a certificate request
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   REQ -new -keyout newreq.pem -out newreq.pem 'DAYS'
 | 
					$   REQ -new -keyout newreq.pem -out newreq.pem 'DAYS'
 | 
				
			||||||
$   RET=$STATUS
 | 
					$   RET=$STATUS
 | 
				
			||||||
$   echo "Request (and private key) is in newreq.pem"
 | 
					$   echo "Request (and private key) is in newreq.pem"
 | 
				
			||||||
@@ -90,41 +101,40 @@ $ IF (prog_opt .EQS. "-newca")
 | 
				
			|||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   ! 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.
 | 
				
			||||||
$   IF F$SEARCH(CATOP+"]serial.") .EQS. ""
 | 
					$   IF F$SEARCH( "CATOP:[000000]serial.") .EQS. ""
 | 
				
			||||||
$   THEN
 | 
					$   THEN
 | 
				
			||||||
$     CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP']
 | 
					$     CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[000000]
 | 
				
			||||||
$     CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.certs]
 | 
					$     CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[certs]
 | 
				
			||||||
$     CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.crl]
 | 
					$     CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[crl]
 | 
				
			||||||
$     CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.newcerts]
 | 
					$     CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[newcerts]
 | 
				
			||||||
$     CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.private]
 | 
					$     CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[private]
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$     OPEN   /WRITE ser_file 'CATOP']serial. 
 | 
					$     OPEN /WRITE ser_file CATOP:[000000]serial. 
 | 
				
			||||||
$     WRITE ser_file "01"
 | 
					$     WRITE ser_file "01"
 | 
				
			||||||
$     CLOSE ser_file
 | 
					$     CLOSE ser_file
 | 
				
			||||||
$     APPEND/NEW NL: 'CATOP']index.txt
 | 
					$     APPEND /NEW_VERSION NL: CATOP:[000000]index.txt
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$     ! The following is to make sure access() doesn't get confused.  It
 | 
					$     ! The following is to make sure access() doesn't get confused.  It
 | 
				
			||||||
$     ! really needs one file in the directory to give correct answers...
 | 
					$     ! really needs one file in the directory to give correct answers...
 | 
				
			||||||
$     COPY NLA0: 'CATOP'.certs].;
 | 
					$     COPY NLA0: CATOP:[certs].;
 | 
				
			||||||
$     COPY NLA0: 'CATOP'.crl].;
 | 
					$     COPY NLA0: CATOP:[crl].;
 | 
				
			||||||
$     COPY NLA0: 'CATOP'.newcerts].;
 | 
					$     COPY NLA0: CATOP:[newcerts].;
 | 
				
			||||||
$     COPY NLA0: 'CATOP'.private].;
 | 
					$     COPY NLA0: CATOP:[private].;
 | 
				
			||||||
$   ENDIF
 | 
					$   ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
 | 
					$   IF F$SEARCH( 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' 'CAKEY'
 | 
				
			||||||
$	RET=$STATUS
 | 
					$       RET=$STATUS
 | 
				
			||||||
$     ELSE
 | 
					$     ELSE
 | 
				
			||||||
$       echo "Making CA certificate ..."
 | 
					$       echo "Making CA certificate ..."
 | 
				
			||||||
$       DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$       DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$       REQ -new -x509 -keyout 'CATOP'.private'CAKEY' -
 | 
					$       REQ -new -x509 -keyout 'CAKEY' -out 'CACERT' 'DAYS'
 | 
				
			||||||
		       -out 'CATOP''CACERT' 'DAYS'
 | 
					$       RET=$STATUS
 | 
				
			||||||
$	RET=$STATUS
 | 
					 | 
				
			||||||
$     ENDIF
 | 
					$     ENDIF
 | 
				
			||||||
$   ENDIF
 | 
					$   ENDIF
 | 
				
			||||||
$   GOTO opt_loop_continue
 | 
					$   GOTO opt_loop_continue
 | 
				
			||||||
@@ -135,16 +145,16 @@ $ THEN
 | 
				
			|||||||
$   i = i + 1
 | 
					$   i = i + 1
 | 
				
			||||||
$   cname = P'i'
 | 
					$   cname = P'i'
 | 
				
			||||||
$   IF cname .EQS. "" THEN cname = "My certificate"
 | 
					$   IF cname .EQS. "" THEN cname = "My certificate"
 | 
				
			||||||
$   PKCS12 -in newcert.pem -inkey newreq.pem -certfile 'CATOP''CACERT -
 | 
					$   PKCS12 -in newcert.pem -inkey newreq.pem -certfile 'CACERT' -
 | 
				
			||||||
	   -out newcert.p12 -export -name "''cname'"
 | 
					     -out newcert.p12 -export -name "''cname'"
 | 
				
			||||||
$   RET=$STATUS
 | 
					$   RET=$STATUS
 | 
				
			||||||
$   exit RET
 | 
					$   goto clean_up
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (prog_opt .EQS. "-xsign")
 | 
					$ IF (prog_opt .EQS. "-xsign")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   CA -policy policy_anything -infiles newreq.pem
 | 
					$   CA -policy policy_anything -infiles newreq.pem
 | 
				
			||||||
$   RET=$STATUS
 | 
					$   RET=$STATUS
 | 
				
			||||||
$   GOTO opt_loop_continue
 | 
					$   GOTO opt_loop_continue
 | 
				
			||||||
@@ -153,7 +163,7 @@ $!
 | 
				
			|||||||
$ IF ((prog_opt .EQS. "-sign") .OR. (prog_opt .EQS. "-signreq"))
 | 
					$ IF ((prog_opt .EQS. "-sign") .OR. (prog_opt .EQS. "-signreq"))
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!   
 | 
					$!   
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   CA -policy policy_anything -out newcert.pem -infiles newreq.pem
 | 
					$   CA -policy policy_anything -out newcert.pem -infiles newreq.pem
 | 
				
			||||||
$   RET=$STATUS
 | 
					$   RET=$STATUS
 | 
				
			||||||
$   type newcert.pem
 | 
					$   type newcert.pem
 | 
				
			||||||
@@ -165,9 +175,9 @@ $ IF (prog_opt .EQS. "-signcert")
 | 
				
			|||||||
$  THEN
 | 
					$  THEN
 | 
				
			||||||
$!   
 | 
					$!   
 | 
				
			||||||
$   echo "Cert passphrase will be requested twice - bug?"
 | 
					$   echo "Cert passphrase will be requested twice - bug?"
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
 | 
					$   X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
 | 
				
			||||||
$   DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$   DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$   CA -policy policy_anything -out newcert.pem -infiles tmp.pem
 | 
					$   CA -policy policy_anything -out newcert.pem -infiles tmp.pem
 | 
				
			||||||
y
 | 
					y
 | 
				
			||||||
y
 | 
					y
 | 
				
			||||||
@@ -182,17 +192,17 @@ $!
 | 
				
			|||||||
$   i = i + 1
 | 
					$   i = i + 1
 | 
				
			||||||
$   IF (p'i' .EQS. "")
 | 
					$   IF (p'i' .EQS. "")
 | 
				
			||||||
$   THEN
 | 
					$   THEN
 | 
				
			||||||
$     DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$     DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$     VERIFY "-CAfile" 'CATOP''CACERT' newcert.pem
 | 
					$     VERIFY "-CAfile" 'CACERT' newcert.pem
 | 
				
			||||||
$   ELSE
 | 
					$   ELSE
 | 
				
			||||||
$     j = i
 | 
					$     j = i
 | 
				
			||||||
$    verify_opt_loop:
 | 
					$    verify_opt_loop:
 | 
				
			||||||
$     IF j .GT. 8 THEN GOTO verify_opt_loop_end
 | 
					$     IF j .GT. 8 THEN GOTO verify_opt_loop_end
 | 
				
			||||||
$     IF p'j' .NES. ""
 | 
					$     IF p'j' .NES. ""
 | 
				
			||||||
$     THEN 
 | 
					$     THEN 
 | 
				
			||||||
$       DEFINE/USER SYS$INPUT '__INPUT'
 | 
					$       DEFINE /USER_MODE SYS$INPUT '__INPUT'
 | 
				
			||||||
$       __tmp = p'j'
 | 
					$       __tmp = p'j'
 | 
				
			||||||
$       VERIFY "-CAfile" 'CATOP''CACERT' '__tmp'
 | 
					$       VERIFY "-CAfile" 'CACERT' '__tmp'
 | 
				
			||||||
$       tmp=$STATUS
 | 
					$       tmp=$STATUS
 | 
				
			||||||
$       IF tmp .NE. 0 THEN RET=tmp
 | 
					$       IF tmp .NE. 0 THEN RET=tmp
 | 
				
			||||||
$     ENDIF
 | 
					$     ENDIF
 | 
				
			||||||
@@ -208,8 +218,8 @@ $ IF (prog_opt .NES. "")
 | 
				
			|||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!   
 | 
					$!   
 | 
				
			||||||
$   echo "Unknown argument ''prog_opt'"
 | 
					$   echo "Unknown argument ''prog_opt'"
 | 
				
			||||||
$   
 | 
					$   RET = 3
 | 
				
			||||||
$   EXIT 3
 | 
					$   goto clean_up
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$opt_loop_continue:
 | 
					$opt_loop_continue:
 | 
				
			||||||
@@ -217,4 +227,10 @@ $ i = i + 1
 | 
				
			|||||||
$ GOTO opt_loop
 | 
					$ GOTO opt_loop
 | 
				
			||||||
$
 | 
					$
 | 
				
			||||||
$opt_loop_end:
 | 
					$opt_loop_end:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$clean_up:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if f$trnlnm( "CATOP", "LNM$PROCESS") .nes. "" then -
 | 
				
			||||||
 | 
					   deassign /process CATOP
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$ EXIT 'RET'
 | 
					$ EXIT 'RET'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -789,14 +789,14 @@ s_cb.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
 | 
				
			|||||||
s_cb.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
					s_cb.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			||||||
s_cb.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
 | 
					s_cb.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
 | 
				
			||||||
s_cb.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
 | 
					s_cb.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
 | 
				
			||||||
s_cb.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
 | 
					s_cb.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
 | 
				
			||||||
s_cb.o: ../include/openssl/sha.h ../include/openssl/ssl.h
 | 
					s_cb.o: ../include/openssl/safestack.h ../include/openssl/sha.h
 | 
				
			||||||
s_cb.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
 | 
					s_cb.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
 | 
				
			||||||
s_cb.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
 | 
					s_cb.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
 | 
				
			||||||
s_cb.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
 | 
					s_cb.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 | 
				
			||||||
s_cb.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
 | 
					s_cb.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
 | 
				
			||||||
s_cb.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
 | 
					s_cb.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
 | 
				
			||||||
s_cb.o: s_apps.h s_cb.c
 | 
					s_cb.o: ../include/openssl/x509v3.h apps.h s_apps.h s_cb.c
 | 
				
			||||||
s_client.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
					s_client.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
				
			||||||
s_client.o: ../include/openssl/bn.h ../include/openssl/buffer.h
 | 
					s_client.o: ../include/openssl/bn.h ../include/openssl/buffer.h
 | 
				
			||||||
s_client.o: ../include/openssl/comp.h ../include/openssl/conf.h
 | 
					s_client.o: ../include/openssl/comp.h ../include/openssl/conf.h
 | 
				
			||||||
@@ -843,26 +843,27 @@ s_server.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
 | 
				
			|||||||
s_server.o: ../include/openssl/ui.h ../include/openssl/x509.h
 | 
					s_server.o: ../include/openssl/ui.h ../include/openssl/x509.h
 | 
				
			||||||
s_server.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
 | 
					s_server.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
 | 
				
			||||||
s_server.o: s_apps.h s_server.c timeouts.h
 | 
					s_server.o: s_apps.h s_server.c timeouts.h
 | 
				
			||||||
s_socket.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
					s_socket.o: ../e_os.h ../e_os2.h ../include/openssl/asn1.h
 | 
				
			||||||
s_socket.o: ../include/openssl/buffer.h ../include/openssl/comp.h
 | 
					s_socket.o: ../include/openssl/bio.h ../include/openssl/buffer.h
 | 
				
			||||||
s_socket.o: ../include/openssl/conf.h ../include/openssl/crypto.h
 | 
					s_socket.o: ../include/openssl/comp.h ../include/openssl/conf.h
 | 
				
			||||||
s_socket.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
 | 
					s_socket.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
 | 
				
			||||||
s_socket.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
 | 
					s_socket.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
 | 
				
			||||||
s_socket.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
 | 
					s_socket.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
 | 
				
			||||||
s_socket.o: ../include/openssl/evp.h ../include/openssl/hmac.h
 | 
					s_socket.o: ../include/openssl/engine.h ../include/openssl/evp.h
 | 
				
			||||||
s_socket.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
 | 
					s_socket.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
 | 
				
			||||||
s_socket.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 | 
					s_socket.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 | 
				
			||||||
s_socket.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
 | 
					s_socket.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
 | 
				
			||||||
s_socket.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 | 
					s_socket.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			||||||
s_socket.o: ../include/openssl/pem.h ../include/openssl/pem2.h
 | 
					s_socket.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
 | 
				
			||||||
s_socket.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
 | 
					s_socket.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
 | 
				
			||||||
s_socket.o: ../include/openssl/safestack.h ../include/openssl/sha.h
 | 
					s_socket.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
 | 
				
			||||||
s_socket.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
 | 
					s_socket.o: ../include/openssl/sha.h ../include/openssl/ssl.h
 | 
				
			||||||
s_socket.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
 | 
					s_socket.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
 | 
				
			||||||
s_socket.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 | 
					s_socket.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
 | 
				
			||||||
s_socket.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
 | 
					s_socket.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
 | 
				
			||||||
s_socket.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
 | 
					s_socket.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
 | 
				
			||||||
s_socket.o: ../include/openssl/x509v3.h apps.h s_apps.h s_socket.c
 | 
					s_socket.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
 | 
				
			||||||
 | 
					s_socket.o: s_apps.h s_socket.c
 | 
				
			||||||
s_time.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
					s_time.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
				
			||||||
s_time.o: ../include/openssl/buffer.h ../include/openssl/comp.h
 | 
					s_time.o: ../include/openssl/buffer.h ../include/openssl/comp.h
 | 
				
			||||||
s_time.o: ../include/openssl/conf.h ../include/openssl/crypto.h
 | 
					s_time.o: ../include/openssl/conf.h ../include/openssl/crypto.h
 | 
				
			||||||
@@ -932,8 +933,8 @@ speed.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
 | 
				
			|||||||
speed.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
 | 
					speed.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
 | 
				
			||||||
speed.o: ../include/openssl/err.h ../include/openssl/evp.h
 | 
					speed.o: ../include/openssl/err.h ../include/openssl/evp.h
 | 
				
			||||||
speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h
 | 
					speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h
 | 
				
			||||||
speed.o: ../include/openssl/lhash.h ../include/openssl/md2.h
 | 
					speed.o: ../include/openssl/lhash.h ../include/openssl/md4.h
 | 
				
			||||||
speed.o: ../include/openssl/md4.h ../include/openssl/md5.h
 | 
					speed.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
 | 
				
			||||||
speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 | 
					speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 | 
				
			||||||
speed.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
 | 
					speed.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
 | 
				
			||||||
speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 | 
					speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 | 
				
			||||||
@@ -1005,17 +1006,16 @@ version.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
 | 
				
			|||||||
version.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
 | 
					version.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
 | 
				
			||||||
version.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
 | 
					version.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
 | 
				
			||||||
version.o: ../include/openssl/evp.h ../include/openssl/idea.h
 | 
					version.o: ../include/openssl/evp.h ../include/openssl/idea.h
 | 
				
			||||||
version.o: ../include/openssl/lhash.h ../include/openssl/md2.h
 | 
					version.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
 | 
				
			||||||
version.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
 | 
					version.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
 | 
				
			||||||
version.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
 | 
					version.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
 | 
				
			||||||
version.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 | 
					version.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
 | 
				
			||||||
version.o: ../include/openssl/pkcs7.h ../include/openssl/rc4.h
 | 
					version.o: ../include/openssl/rc4.h ../include/openssl/safestack.h
 | 
				
			||||||
version.o: ../include/openssl/safestack.h ../include/openssl/sha.h
 | 
					version.o: ../include/openssl/sha.h ../include/openssl/stack.h
 | 
				
			||||||
version.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
 | 
					version.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
 | 
				
			||||||
version.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
 | 
					version.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
 | 
				
			||||||
version.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
 | 
					version.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
 | 
				
			||||||
version.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
 | 
					version.o: ../include/openssl/x509v3.h apps.h version.c
 | 
				
			||||||
version.o: version.c
 | 
					 | 
				
			||||||
x509.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
					x509.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 | 
				
			||||||
x509.o: ../include/openssl/bn.h ../include/openssl/buffer.h
 | 
					x509.o: ../include/openssl/bn.h ../include/openssl/buffer.h
 | 
				
			||||||
x509.o: ../include/openssl/conf.h ../include/openssl/crypto.h
 | 
					x509.o: ../include/openssl/conf.h ../include/openssl/crypto.h
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										218
									
								
								apps/apps.c
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								apps/apps.c
									
									
									
									
									
								
							@@ -109,14 +109,16 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _POSIX_C_SOURCE
 | 
				
			||||||
#define _POSIX_C_SOURCE 2	/* On VMS, you need to define this to get
 | 
					#define _POSIX_C_SOURCE 2	/* On VMS, you need to define this to get
 | 
				
			||||||
				   the declaration of fileno().  The value
 | 
									   the declaration of fileno().  The value
 | 
				
			||||||
				   2 is to make sure no function defined
 | 
									   2 is to make sure no function defined
 | 
				
			||||||
				   in POSIX-2 is left undefined. */
 | 
									   in POSIX-2 is left undefined. */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#ifndef OPENSSL_SYSNAME_WIN32
 | 
					#if !defined(OPENSSL_SYSNAME_WIN32) && !defined(NETWARE_CLIB)
 | 
				
			||||||
#include <strings.h>
 | 
					#include <strings.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
@@ -255,17 +257,12 @@ int args_from_file(char *file, int *argc, char **argv[])
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int str2fmt(char *s)
 | 
					int str2fmt(char *s)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
						if (s == NULL)
 | 
				
			||||||
 | 
							return FORMAT_UNDEF;
 | 
				
			||||||
	if 	((*s == 'D') || (*s == 'd'))
 | 
						if 	((*s == 'D') || (*s == 'd'))
 | 
				
			||||||
		return(FORMAT_ASN1);
 | 
							return(FORMAT_ASN1);
 | 
				
			||||||
	else if ((*s == 'T') || (*s == 't'))
 | 
						else if ((*s == 'T') || (*s == 't'))
 | 
				
			||||||
		return(FORMAT_TEXT);
 | 
							return(FORMAT_TEXT);
 | 
				
			||||||
	else if ((*s == 'P') || (*s == 'p'))
 | 
					 | 
				
			||||||
 		{
 | 
					 | 
				
			||||||
 		if (s[1] == 'V' || s[1] == 'v')
 | 
					 | 
				
			||||||
 			return FORMAT_PVK;
 | 
					 | 
				
			||||||
 		else
 | 
					 | 
				
			||||||
  			return(FORMAT_PEM);
 | 
					 | 
				
			||||||
 		}
 | 
					 | 
				
			||||||
  	else if ((*s == 'N') || (*s == 'n'))
 | 
					  	else if ((*s == 'N') || (*s == 'n'))
 | 
				
			||||||
  		return(FORMAT_NETSCAPE);
 | 
					  		return(FORMAT_NETSCAPE);
 | 
				
			||||||
  	else if ((*s == 'S') || (*s == 's'))
 | 
					  	else if ((*s == 'S') || (*s == 's'))
 | 
				
			||||||
@@ -278,6 +275,13 @@ int str2fmt(char *s)
 | 
				
			|||||||
		return(FORMAT_PKCS12);
 | 
							return(FORMAT_PKCS12);
 | 
				
			||||||
	else if ((*s == 'E') || (*s == 'e'))
 | 
						else if ((*s == 'E') || (*s == 'e'))
 | 
				
			||||||
		return(FORMAT_ENGINE);
 | 
							return(FORMAT_ENGINE);
 | 
				
			||||||
 | 
						else if ((*s == 'P') || (*s == 'p'))
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 		if (s[1] == 'V' || s[1] == 'v')
 | 
				
			||||||
 | 
					 			return FORMAT_PVK;
 | 
				
			||||||
 | 
					 		else
 | 
				
			||||||
 | 
					  			return(FORMAT_PEM);
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		return(FORMAT_UNDEF);
 | 
							return(FORMAT_UNDEF);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -375,13 +379,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)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -795,7 +798,9 @@ X509 *load_cert(BIO *err, const char *file, int format,
 | 
				
			|||||||
	if (file == NULL)
 | 
						if (file == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifdef _IONBF
 | 
					#ifdef _IONBF
 | 
				
			||||||
 | 
					# ifndef OPENSSL_NO_SETVBUF_IONBF
 | 
				
			||||||
		setvbuf(stdin, NULL, _IONBF, 0);
 | 
							setvbuf(stdin, NULL, _IONBF, 0);
 | 
				
			||||||
 | 
					# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		BIO_set_fp(cert,stdin,BIO_NOCLOSE);
 | 
							BIO_set_fp(cert,stdin,BIO_NOCLOSE);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -873,10 +878,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
 | 
				
			||||||
@@ -889,7 +901,9 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
	if (file == NULL && maybe_stdin)
 | 
						if (file == NULL && maybe_stdin)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifdef _IONBF
 | 
					#ifdef _IONBF
 | 
				
			||||||
 | 
					# ifndef OPENSSL_NO_SETVBUF_IONBF
 | 
				
			||||||
		setvbuf(stdin, NULL, _IONBF, 0);
 | 
							setvbuf(stdin, NULL, _IONBF, 0);
 | 
				
			||||||
 | 
					# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		BIO_set_fp(key,stdin,BIO_NOCLOSE);
 | 
							BIO_set_fp(key,stdin,BIO_NOCLOSE);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -921,11 +935,13 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
				&pkey, NULL, NULL))
 | 
									&pkey, NULL, NULL))
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA) && !defined (OPENSSL_NO_RC4)
 | 
				
			||||||
	else if (format == FORMAT_MSBLOB)
 | 
						else if (format == FORMAT_MSBLOB)
 | 
				
			||||||
		pkey = b2i_PrivateKey_bio(key);
 | 
							pkey = b2i_PrivateKey_bio(key);
 | 
				
			||||||
	else if (format == FORMAT_PVK)
 | 
						else if (format == FORMAT_PVK)
 | 
				
			||||||
		pkey = b2i_PVK_bio(key, (pem_password_cb *)password_callback,
 | 
							pkey = b2i_PVK_bio(key, (pem_password_cb *)password_callback,
 | 
				
			||||||
								&cb_data);
 | 
													&cb_data);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(err,"bad input format specified for key file\n");
 | 
							BIO_printf(err,"bad input format specified for key file\n");
 | 
				
			||||||
@@ -933,8 +949,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);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -973,7 +992,9 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
	if (file == NULL && maybe_stdin)
 | 
						if (file == NULL && maybe_stdin)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifdef _IONBF
 | 
					#ifdef _IONBF
 | 
				
			||||||
 | 
					# ifndef OPENSSL_NO_SETVBUF_IONBF
 | 
				
			||||||
		setvbuf(stdin, NULL, _IONBF, 0);
 | 
							setvbuf(stdin, NULL, _IONBF, 0);
 | 
				
			||||||
 | 
					# endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		BIO_set_fp(key,stdin,BIO_NOCLOSE);
 | 
							BIO_set_fp(key,stdin,BIO_NOCLOSE);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -989,6 +1010,7 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		pkey=d2i_PUBKEY_bio(key, NULL);
 | 
							pkey=d2i_PUBKEY_bio(key, NULL);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
	else if (format == FORMAT_ASN1RSA)
 | 
						else if (format == FORMAT_ASN1RSA)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		RSA *rsa;
 | 
							RSA *rsa;
 | 
				
			||||||
@@ -1018,7 +1040,7 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
		else
 | 
							else
 | 
				
			||||||
			pkey = NULL;
 | 
								pkey = NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	else if (format == FORMAT_PEM)
 | 
						else if (format == FORMAT_PEM)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		pkey=PEM_read_bio_PUBKEY(key,NULL,
 | 
							pkey=PEM_read_bio_PUBKEY(key,NULL,
 | 
				
			||||||
@@ -1028,8 +1050,10 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
	else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
 | 
						else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
 | 
				
			||||||
		pkey = load_netscape_key(err, key, file, key_descrip, format);
 | 
							pkey = load_netscape_key(err, key, file, key_descrip, format);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA)
 | 
				
			||||||
	else if (format == FORMAT_MSBLOB)
 | 
						else if (format == FORMAT_MSBLOB)
 | 
				
			||||||
		pkey = b2i_PublicKey_bio(key);
 | 
							pkey = b2i_PublicKey_bio(key);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(err,"bad input format specified for key file\n");
 | 
							BIO_printf(err,"bad input format specified for key file\n");
 | 
				
			||||||
@@ -1088,76 +1112,120 @@ error:
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
#endif /* ndef OPENSSL_NO_RC4 */
 | 
					#endif /* ndef OPENSSL_NO_RC4 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
 | 
					static int load_certs_crls(BIO *err, const char *file, int format,
 | 
				
			||||||
	const char *pass, ENGINE *e, const char *cert_descrip)
 | 
						const char *pass, ENGINE *e, const char *desc,
 | 
				
			||||||
 | 
						STACK_OF(X509) **pcerts, STACK_OF(X509_CRL) **pcrls)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BIO *certs;
 | 
					 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	STACK_OF(X509) *othercerts = NULL;
 | 
						BIO *bio;
 | 
				
			||||||
	STACK_OF(X509_INFO) *allcerts = NULL;
 | 
						STACK_OF(X509_INFO) *xis = NULL;
 | 
				
			||||||
	X509_INFO *xi;
 | 
						X509_INFO *xi;
 | 
				
			||||||
	PW_CB_DATA cb_data;
 | 
						PW_CB_DATA cb_data;
 | 
				
			||||||
 | 
						int rv = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cb_data.password = pass;
 | 
						cb_data.password = pass;
 | 
				
			||||||
	cb_data.prompt_info = file;
 | 
						cb_data.prompt_info = file;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if((certs = BIO_new(BIO_s_file())) == NULL)
 | 
						if (format != FORMAT_PEM)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		ERR_print_errors(err);
 | 
							BIO_printf(err,"bad input format specified for %s\n", desc);
 | 
				
			||||||
		goto end;
 | 
							return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (file == NULL)
 | 
						if (file == NULL)
 | 
				
			||||||
		BIO_set_fp(certs,stdin,BIO_NOCLOSE);
 | 
							bio = BIO_new_fp(stdin,BIO_NOCLOSE);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
 | 
							bio = BIO_new_file(file, "r");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (bio == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (BIO_read_filename(certs,file) <= 0)
 | 
							BIO_printf(err, "Error opening %s %s\n",
 | 
				
			||||||
			{
 | 
									desc, file ? file : "stdin");
 | 
				
			||||||
			BIO_printf(err, "Error opening %s %s\n",
 | 
							ERR_print_errors(err);
 | 
				
			||||||
				cert_descrip, file);
 | 
							return 0;
 | 
				
			||||||
			ERR_print_errors(err);
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xis = PEM_X509_INFO_read_bio(bio, NULL,
 | 
				
			||||||
 | 
									(pem_password_cb *)password_callback, &cb_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BIO_free(bio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (pcerts)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							*pcerts = sk_X509_new_null();
 | 
				
			||||||
 | 
							if (!*pcerts)
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (pcrls)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							*pcrls = sk_X509_CRL_new_null();
 | 
				
			||||||
 | 
							if (!*pcrls)
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(i = 0; i < sk_X509_INFO_num(xis); i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							xi = sk_X509_INFO_value (xis, i);
 | 
				
			||||||
 | 
							if (xi->x509 && pcerts)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (!sk_X509_push(*pcerts, xi->x509))
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
								xi->x509 = NULL;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (xi->crl && pcrls)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (!sk_X509_CRL_push(*pcrls, xi->crl))
 | 
				
			||||||
 | 
									goto end;
 | 
				
			||||||
 | 
								xi->crl = NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if      (format == FORMAT_PEM)
 | 
						if (pcerts && sk_X509_num(*pcerts) > 0)
 | 
				
			||||||
 | 
							rv = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (pcrls && sk_X509_CRL_num(*pcrls) > 0)
 | 
				
			||||||
 | 
							rv = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						end:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (xis)
 | 
				
			||||||
 | 
							sk_X509_INFO_pop_free(xis, X509_INFO_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (rv == 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		othercerts = sk_X509_new_null();
 | 
							if (pcerts)
 | 
				
			||||||
		if(!othercerts)
 | 
					 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			sk_X509_free(othercerts);
 | 
								sk_X509_pop_free(*pcerts, X509_free);
 | 
				
			||||||
			othercerts = NULL;
 | 
								*pcerts = NULL;
 | 
				
			||||||
			goto end;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		allcerts = PEM_X509_INFO_read_bio(certs, NULL,
 | 
							if (pcrls)
 | 
				
			||||||
				(pem_password_cb *)password_callback, &cb_data);
 | 
					 | 
				
			||||||
		for(i = 0; i < sk_X509_INFO_num(allcerts); i++)
 | 
					 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			xi = sk_X509_INFO_value (allcerts, i);
 | 
								sk_X509_CRL_pop_free(*pcrls, X509_CRL_free);
 | 
				
			||||||
			if (xi->x509)
 | 
								*pcrls = NULL;
 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
				sk_X509_push(othercerts, xi->x509);
 | 
					 | 
				
			||||||
				xi->x509 = NULL;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		goto end;
 | 
							BIO_printf(err,"unable to load %s\n",
 | 
				
			||||||
		}
 | 
									pcerts ? "certificates" : "CRLs");
 | 
				
			||||||
	else	{
 | 
					 | 
				
			||||||
		BIO_printf(err,"bad input format specified for %s\n",
 | 
					 | 
				
			||||||
			cert_descrip);
 | 
					 | 
				
			||||||
		goto end;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
end:
 | 
					 | 
				
			||||||
	if (othercerts == NULL)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		BIO_printf(err,"unable to load certificates\n");
 | 
					 | 
				
			||||||
		ERR_print_errors(err);
 | 
							ERR_print_errors(err);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (allcerts) sk_X509_INFO_pop_free(allcerts, X509_INFO_free);
 | 
						return rv;
 | 
				
			||||||
	if (certs != NULL) BIO_free(certs);
 | 
					 | 
				
			||||||
	return(othercerts);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
 | 
				
			||||||
 | 
						const char *pass, ENGINE *e, const char *desc)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						STACK_OF(X509) *certs;
 | 
				
			||||||
 | 
						load_certs_crls(err, file, format, pass, e, desc, &certs, NULL);
 | 
				
			||||||
 | 
						return certs;
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STACK_OF(X509_CRL) *load_crls(BIO *err, const char *file, int format,
 | 
				
			||||||
 | 
						const char *pass, ENGINE *e, const char *desc)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						STACK_OF(X509_CRL) *crls;
 | 
				
			||||||
 | 
						load_certs_crls(err, file, format, pass, e, desc, NULL, &crls);
 | 
				
			||||||
 | 
						return crls;
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define X509V3_EXT_UNKNOWN_MASK		(0xfL << 16)
 | 
					#define X509V3_EXT_UNKNOWN_MASK		(0xfL << 16)
 | 
				
			||||||
/* Return error for unknown extensions */
 | 
					/* Return error for unknown extensions */
 | 
				
			||||||
@@ -1481,7 +1549,7 @@ char *make_config_name()
 | 
				
			|||||||
	return p;
 | 
						return p;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static unsigned long index_serial_hash(const CSTRING *a)
 | 
					static unsigned long index_serial_hash(const OPENSSL_CSTRING *a)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	const char *n;
 | 
						const char *n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1490,7 +1558,7 @@ static unsigned long index_serial_hash(const CSTRING *a)
 | 
				
			|||||||
	return(lh_strhash(n));
 | 
						return(lh_strhash(n));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int index_serial_cmp(const CSTRING *a, const CSTRING *b)
 | 
					static int index_serial_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	const char *aa,*bb;
 | 
						const char *aa,*bb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1502,16 +1570,16 @@ static int index_serial_cmp(const CSTRING *a, const CSTRING *b)
 | 
				
			|||||||
static int index_name_qual(char **a)
 | 
					static int index_name_qual(char **a)
 | 
				
			||||||
	{ return(a[0][0] == 'V'); }
 | 
						{ return(a[0][0] == 'V'); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static unsigned long index_name_hash(const CSTRING *a)
 | 
					static unsigned long index_name_hash(const OPENSSL_CSTRING *a)
 | 
				
			||||||
	{ return(lh_strhash(a[DB_name])); }
 | 
						{ return(lh_strhash(a[DB_name])); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int index_name_cmp(const CSTRING *a, const CSTRING *b)
 | 
					int index_name_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b)
 | 
				
			||||||
	{ return(strcmp(a[DB_name], b[DB_name])); }
 | 
						{ return(strcmp(a[DB_name], b[DB_name])); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static IMPLEMENT_LHASH_HASH_FN(index_serial, CSTRING)
 | 
					static IMPLEMENT_LHASH_HASH_FN(index_serial, OPENSSL_CSTRING)
 | 
				
			||||||
static IMPLEMENT_LHASH_COMP_FN(index_serial, CSTRING)
 | 
					static IMPLEMENT_LHASH_COMP_FN(index_serial, OPENSSL_CSTRING)
 | 
				
			||||||
static IMPLEMENT_LHASH_HASH_FN(index_name, CSTRING)
 | 
					static IMPLEMENT_LHASH_HASH_FN(index_name, OPENSSL_CSTRING)
 | 
				
			||||||
static IMPLEMENT_LHASH_COMP_FN(index_name, CSTRING)
 | 
					static IMPLEMENT_LHASH_COMP_FN(index_name, OPENSSL_CSTRING)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef BSIZE
 | 
					#undef BSIZE
 | 
				
			||||||
#define BSIZE 256
 | 
					#define BSIZE 256
 | 
				
			||||||
@@ -2185,7 +2253,7 @@ int args_verify(char ***pargs, int *pargc,
 | 
				
			|||||||
	ASN1_OBJECT *otmp = NULL;
 | 
						ASN1_OBJECT *otmp = NULL;
 | 
				
			||||||
	unsigned long flags = 0;
 | 
						unsigned long flags = 0;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	int purpose = 0;
 | 
						int purpose = 0, depth = -1;
 | 
				
			||||||
	char **oldargs = *pargs;
 | 
						char **oldargs = *pargs;
 | 
				
			||||||
	char *arg = **pargs, *argn = (*pargs)[1];
 | 
						char *arg = **pargs, *argn = (*pargs)[1];
 | 
				
			||||||
	if (!strcmp(arg, "-policy"))
 | 
						if (!strcmp(arg, "-policy"))
 | 
				
			||||||
@@ -2225,6 +2293,21 @@ int args_verify(char ***pargs, int *pargc,
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		(*pargs)++;
 | 
							(*pargs)++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						else if (strcmp(arg,"-verify_depth") == 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (!argn)
 | 
				
			||||||
 | 
								*badarg = 1;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								depth = atoi(argn);
 | 
				
			||||||
 | 
								if(depth < 0)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(err, "invalid depth\n");
 | 
				
			||||||
 | 
									*badarg = 1;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							(*pargs)++;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	else if (!strcmp(arg, "-ignore_critical"))
 | 
						else if (!strcmp(arg, "-ignore_critical"))
 | 
				
			||||||
		flags |= X509_V_FLAG_IGNORE_CRITICAL;
 | 
							flags |= X509_V_FLAG_IGNORE_CRITICAL;
 | 
				
			||||||
	else if (!strcmp(arg, "-issuer_checks"))
 | 
						else if (!strcmp(arg, "-issuer_checks"))
 | 
				
			||||||
@@ -2249,6 +2332,8 @@ int args_verify(char ***pargs, int *pargc,
 | 
				
			|||||||
		flags |= X509_V_FLAG_USE_DELTAS;
 | 
							flags |= X509_V_FLAG_USE_DELTAS;
 | 
				
			||||||
	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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2274,6 +2359,9 @@ int args_verify(char ***pargs, int *pargc,
 | 
				
			|||||||
	if (purpose)
 | 
						if (purpose)
 | 
				
			||||||
		X509_VERIFY_PARAM_set_purpose(*pm, purpose);
 | 
							X509_VERIFY_PARAM_set_purpose(*pm, purpose);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (depth >= 0)
 | 
				
			||||||
 | 
							X509_VERIFY_PARAM_set_depth(*pm, depth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	end:
 | 
						end:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	(*pargs)++;
 | 
						(*pargs)++;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								apps/apps.h
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								apps/apps.h
									
									
									
									
									
								
							@@ -168,6 +168,12 @@ extern BIO *bio_err;
 | 
				
			|||||||
#define do_pipe_sig()
 | 
					#define do_pipe_sig()
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OPENSSL_NO_COMP
 | 
				
			||||||
 | 
					#define zlib_cleanup() 
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define zlib_cleanup() COMP_zlib_cleanup()
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(MONOLITH) && !defined(OPENSSL_C)
 | 
					#if defined(MONOLITH) && !defined(OPENSSL_C)
 | 
				
			||||||
#  define apps_startup() \
 | 
					#  define apps_startup() \
 | 
				
			||||||
		do_pipe_sig()
 | 
							do_pipe_sig()
 | 
				
			||||||
@@ -182,7 +188,7 @@ extern BIO *bio_err;
 | 
				
			|||||||
			do { CONF_modules_unload(1); destroy_ui_method(); \
 | 
								do { CONF_modules_unload(1); destroy_ui_method(); \
 | 
				
			||||||
			OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
 | 
								OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
 | 
				
			||||||
			CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
 | 
								CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
 | 
				
			||||||
			ERR_free_strings(); COMP_zlib_cleanup();} while(0)
 | 
								ERR_free_strings(); zlib_cleanup();} while(0)
 | 
				
			||||||
#  else
 | 
					#  else
 | 
				
			||||||
#    define apps_startup() \
 | 
					#    define apps_startup() \
 | 
				
			||||||
			do { do_pipe_sig(); CRYPTO_malloc_init(); \
 | 
								do { do_pipe_sig(); CRYPTO_malloc_init(); \
 | 
				
			||||||
@@ -192,7 +198,7 @@ extern BIO *bio_err;
 | 
				
			|||||||
			do { CONF_modules_unload(1); destroy_ui_method(); \
 | 
								do { CONF_modules_unload(1); destroy_ui_method(); \
 | 
				
			||||||
			OBJ_cleanup(); EVP_cleanup(); \
 | 
								OBJ_cleanup(); EVP_cleanup(); \
 | 
				
			||||||
			CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
 | 
								CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
 | 
				
			||||||
			ERR_free_strings(); } while(0)
 | 
								ERR_free_strings(); zlib_cleanup(); } while(0)
 | 
				
			||||||
#  endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -245,6 +251,8 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
 | 
				
			|||||||
	const char *pass, ENGINE *e, const char *key_descrip);
 | 
						const char *pass, ENGINE *e, const char *key_descrip);
 | 
				
			||||||
STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
 | 
					STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
 | 
				
			||||||
	const char *pass, ENGINE *e, const char *cert_descrip);
 | 
						const char *pass, ENGINE *e, const char *cert_descrip);
 | 
				
			||||||
 | 
					STACK_OF(X509_CRL) *load_crls(BIO *err, const char *file, int format,
 | 
				
			||||||
 | 
						const char *pass, ENGINE *e, const char *cert_descrip);
 | 
				
			||||||
X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath);
 | 
					X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath);
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
ENGINE *setup_engine(BIO *err, const char *engine, int debug);
 | 
					ENGINE *setup_engine(BIO *err, const char *engine, int debug);
 | 
				
			||||||
@@ -253,6 +261,7 @@ ENGINE *setup_engine(BIO *err, const char *engine, int debug);
 | 
				
			|||||||
#ifndef OPENSSL_NO_OCSP
 | 
					#ifndef OPENSSL_NO_OCSP
 | 
				
			||||||
OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
					OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
				
			||||||
			char *host, char *path, char *port, int use_ssl,
 | 
								char *host, char *path, char *port, int use_ssl,
 | 
				
			||||||
 | 
								STACK_OF(CONF_VALUE) *headers,
 | 
				
			||||||
			int req_timeout);
 | 
								int req_timeout);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -295,9 +304,9 @@ int save_index(const char *dbfile, const char *suffix, CA_DB *db);
 | 
				
			|||||||
int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suffix);
 | 
					int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suffix);
 | 
				
			||||||
void free_index(CA_DB *db);
 | 
					void free_index(CA_DB *db);
 | 
				
			||||||
#define index_name_cmp_noconst(a, b) \
 | 
					#define index_name_cmp_noconst(a, b) \
 | 
				
			||||||
	index_name_cmp((const CSTRING *)CHECKED_PTR_OF(STRING, a), \
 | 
						index_name_cmp((const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, a), \
 | 
				
			||||||
	(const CSTRING *)CHECKED_PTR_OF(STRING, b))
 | 
						(const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, b))
 | 
				
			||||||
int index_name_cmp(const CSTRING *a, const CSTRING *b);
 | 
					int index_name_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b);
 | 
				
			||||||
int parse_yesno(const char *str, int def);
 | 
					int parse_yesno(const char *str, int def);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X509_NAME *parse_name(char *str, long chtype, int multirdn);
 | 
					X509_NAME *parse_name(char *str, long chtype, int multirdn);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -96,7 +96,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	unsigned char *tmpbuf;
 | 
						unsigned char *tmpbuf;
 | 
				
			||||||
	const unsigned char *ctmpbuf;
 | 
						const unsigned char *ctmpbuf;
 | 
				
			||||||
	BUF_MEM *buf=NULL;
 | 
						BUF_MEM *buf=NULL;
 | 
				
			||||||
	STACK_OF(STRING) *osk=NULL;
 | 
						STACK_OF(OPENSSL_STRING) *osk=NULL;
 | 
				
			||||||
	ASN1_TYPE *at=NULL;
 | 
						ASN1_TYPE *at=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informat=FORMAT_PEM;
 | 
						informat=FORMAT_PEM;
 | 
				
			||||||
@@ -113,7 +113,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	prog=argv[0];
 | 
						prog=argv[0];
 | 
				
			||||||
	argc--;
 | 
						argc--;
 | 
				
			||||||
	argv++;
 | 
						argv++;
 | 
				
			||||||
	if ((osk=sk_STRING_new_null()) == NULL)
 | 
						if ((osk=sk_OPENSSL_STRING_new_null()) == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"Memory allocation failure\n");
 | 
							BIO_printf(bio_err,"Memory allocation failure\n");
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
@@ -169,7 +169,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-strparse") == 0)
 | 
							else if (strcmp(*argv,"-strparse") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			sk_STRING_push(osk,*(++argv));
 | 
								sk_OPENSSL_STRING_push(osk,*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-genstr") == 0)
 | 
							else if (strcmp(*argv,"-genstr") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -302,18 +302,18 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* If any structs to parse go through in sequence */
 | 
						/* If any structs to parse go through in sequence */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (sk_STRING_num(osk))
 | 
						if (sk_OPENSSL_STRING_num(osk))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		tmpbuf=(unsigned char *)str;
 | 
							tmpbuf=(unsigned char *)str;
 | 
				
			||||||
		tmplen=num;
 | 
							tmplen=num;
 | 
				
			||||||
		for (i=0; i<sk_STRING_num(osk); i++)
 | 
							for (i=0; i<sk_OPENSSL_STRING_num(osk); i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1_TYPE *atmp;
 | 
								ASN1_TYPE *atmp;
 | 
				
			||||||
			int typ;
 | 
								int typ;
 | 
				
			||||||
			j=atoi(sk_STRING_value(osk,i));
 | 
								j=atoi(sk_OPENSSL_STRING_value(osk,i));
 | 
				
			||||||
			if (j == 0)
 | 
								if (j == 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				BIO_printf(bio_err,"'%s' is an invalid number\n",sk_STRING_value(osk,i));
 | 
									BIO_printf(bio_err,"'%s' is an invalid number\n",sk_OPENSSL_STRING_value(osk,i));
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			tmpbuf+=j;
 | 
								tmpbuf+=j;
 | 
				
			||||||
@@ -378,7 +378,7 @@ end:
 | 
				
			|||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
	if (buf != NULL) BUF_MEM_free(buf);
 | 
						if (buf != NULL) BUF_MEM_free(buf);
 | 
				
			||||||
	if (at != NULL) ASN1_TYPE_free(at);
 | 
						if (at != NULL) ASN1_TYPE_free(at);
 | 
				
			||||||
	if (osk != NULL) sk_STRING_free(osk);
 | 
						if (osk != NULL) sk_OPENSSL_STRING_free(osk);
 | 
				
			||||||
	OBJ_cleanup();
 | 
						OBJ_cleanup();
 | 
				
			||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										79
									
								
								apps/ca.c
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								apps/ca.c
									
									
									
									
									
								
							@@ -215,7 +215,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,
 | 
				
			||||||
@@ -883,9 +882,9 @@ bad:
 | 
				
			|||||||
	if (db == NULL) goto err;
 | 
						if (db == NULL) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Lets check some fields */
 | 
						/* Lets check some fields */
 | 
				
			||||||
	for (i=0; i<sk_PSTRING_num(db->db->data); i++)
 | 
						for (i=0; i<sk_OPENSSL_PSTRING_num(db->db->data); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		pp=sk_PSTRING_value(db->db->data,i);
 | 
							pp=sk_OPENSSL_PSTRING_value(db->db->data,i);
 | 
				
			||||||
		if ((pp[DB_type][0] != DB_TYPE_REV) &&
 | 
							if ((pp[DB_type][0] != DB_TYPE_REV) &&
 | 
				
			||||||
			(pp[DB_rev_date][0] != '\0'))
 | 
								(pp[DB_rev_date][0] != '\0'))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -938,7 +937,7 @@ bad:
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
		TXT_DB_write(out,db->db);
 | 
							TXT_DB_write(out,db->db);
 | 
				
			||||||
		BIO_printf(bio_err,"%d entries loaded from the database\n",
 | 
							BIO_printf(bio_err,"%d entries loaded from the database\n",
 | 
				
			||||||
			   sk_PSTRING_num(db->db->data));
 | 
								   sk_OPENSSL_PSTRING_num(db->db->data));
 | 
				
			||||||
		BIO_printf(bio_err,"generating index\n");
 | 
							BIO_printf(bio_err,"generating index\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -1263,7 +1262,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"); 
 | 
				
			||||||
@@ -1403,14 +1407,19 @@ bad:
 | 
				
			|||||||
		if (!tmptm) goto err;
 | 
							if (!tmptm) goto err;
 | 
				
			||||||
		X509_gmtime_adj(tmptm,0);
 | 
							X509_gmtime_adj(tmptm,0);
 | 
				
			||||||
		X509_CRL_set_lastUpdate(crl, tmptm);	
 | 
							X509_CRL_set_lastUpdate(crl, tmptm);	
 | 
				
			||||||
		X509_time_adj_ex(tmptm, crldays, crlhours*60*60 + crlsec, NULL);
 | 
							if (!X509_time_adj_ex(tmptm, crldays, crlhours*60*60 + crlsec,
 | 
				
			||||||
 | 
								NULL))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_puts(bio_err, "error setting CRL nextUpdate\n");
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		X509_CRL_set_nextUpdate(crl, tmptm);	
 | 
							X509_CRL_set_nextUpdate(crl, tmptm);	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ASN1_TIME_free(tmptm);
 | 
							ASN1_TIME_free(tmptm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (i=0; i<sk_PSTRING_num(db->db->data); i++)
 | 
							for (i=0; i<sk_OPENSSL_PSTRING_num(db->db->data); i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			pp=sk_PSTRING_value(db->db->data,i);
 | 
								pp=sk_OPENSSL_PSTRING_value(db->db->data,i);
 | 
				
			||||||
			if (pp[DB_type][0] == DB_TYPE_REV)
 | 
								if (pp[DB_type][0] == DB_TYPE_REV)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if ((r=X509_REVOKED_new()) == NULL) goto err;
 | 
									if ((r=X509_REVOKED_new()) == NULL) goto err;
 | 
				
			||||||
@@ -1685,9 +1694,9 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
 | 
				
			|||||||
	int ok= -1,i,j,last,nid;
 | 
						int ok= -1,i,j,last,nid;
 | 
				
			||||||
	const char *p;
 | 
						const char *p;
 | 
				
			||||||
	CONF_VALUE *cv;
 | 
						CONF_VALUE *cv;
 | 
				
			||||||
	STRING row[DB_NUMBER];
 | 
						OPENSSL_STRING row[DB_NUMBER];
 | 
				
			||||||
	STRING *irow=NULL;
 | 
						OPENSSL_STRING *irow=NULL;
 | 
				
			||||||
	STRING *rrow=NULL;
 | 
						OPENSSL_STRING *rrow=NULL;
 | 
				
			||||||
	char buf[25];
 | 
						char buf[25];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tmptm=ASN1_UTCTIME_new();
 | 
						tmptm=ASN1_UTCTIME_new();
 | 
				
			||||||
@@ -1929,7 +1938,7 @@ again2:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (db->attributes.unique_subject)
 | 
						if (db->attributes.unique_subject)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		STRING *crow=row;
 | 
							OPENSSL_STRING *crow=row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		rrow=TXT_DB_get_by_index(db->db,DB_name,crow);
 | 
							rrow=TXT_DB_get_by_index(db->db,DB_name,crow);
 | 
				
			||||||
		if (rrow != NULL)
 | 
							if (rrow != NULL)
 | 
				
			||||||
@@ -2117,7 +2126,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");
 | 
				
			||||||
@@ -2319,25 +2333,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)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -2380,21 +2378,6 @@ err:
 | 
				
			|||||||
	return(ok);
 | 
						return(ok);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int fix_data(int nid, int *type)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	if (nid == NID_pkcs9_emailAddress)
 | 
					 | 
				
			||||||
		*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(const char *str)
 | 
					static int check_time_format(const char *str)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	return ASN1_TIME_set_string(NULL, str);
 | 
						return ASN1_TIME_set_string(NULL, str);
 | 
				
			||||||
@@ -2632,9 +2615,9 @@ static int do_updatedb (CA_DB *db)
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		a_y2k = 0;
 | 
							a_y2k = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < sk_PSTRING_num(db->db->data); i++)
 | 
						for (i = 0; i < sk_OPENSSL_PSTRING_num(db->db->data); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		rrow = sk_PSTRING_value(db->db->data, i);
 | 
							rrow = sk_OPENSSL_PSTRING_value(db->db->data, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (rrow[DB_type][0] == 'V')
 | 
							if (rrow[DB_type][0] == 'V')
 | 
				
			||||||
		 	{
 | 
							 	{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										70
									
								
								apps/cms.c
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								apps/cms.c
									
									
									
									
									
								
							@@ -71,9 +71,9 @@
 | 
				
			|||||||
static int save_certs(char *signerfile, STACK_OF(X509) *signers);
 | 
					static int save_certs(char *signerfile, STACK_OF(X509) *signers);
 | 
				
			||||||
static int cms_cb(int ok, X509_STORE_CTX *ctx);
 | 
					static int cms_cb(int ok, X509_STORE_CTX *ctx);
 | 
				
			||||||
static void receipt_request_print(BIO *out, CMS_ContentInfo *cms);
 | 
					static void receipt_request_print(BIO *out, CMS_ContentInfo *cms);
 | 
				
			||||||
static CMS_ReceiptRequest *make_receipt_request(STACK_OF(STRING) *rr_to,
 | 
					static CMS_ReceiptRequest *make_receipt_request(STACK_OF(OPENSSL_STRING) *rr_to,
 | 
				
			||||||
						int rr_allorfirst,
 | 
											int rr_allorfirst,
 | 
				
			||||||
						STACK_OF(STRING) *rr_from);
 | 
										STACK_OF(OPENSSL_STRING) *rr_from);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SMIME_OP	0x10
 | 
					#define SMIME_OP	0x10
 | 
				
			||||||
#define SMIME_IP	0x20
 | 
					#define SMIME_IP	0x20
 | 
				
			||||||
@@ -108,7 +108,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	const char *inmode = "r", *outmode = "w";
 | 
						const char *inmode = "r", *outmode = "w";
 | 
				
			||||||
	char *infile = NULL, *outfile = NULL, *rctfile = NULL;
 | 
						char *infile = NULL, *outfile = NULL, *rctfile = NULL;
 | 
				
			||||||
	char *signerfile = NULL, *recipfile = NULL;
 | 
						char *signerfile = NULL, *recipfile = NULL;
 | 
				
			||||||
	STACK_OF(STRING) *sksigners = NULL, *skkeys = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *sksigners = NULL, *skkeys = NULL;
 | 
				
			||||||
	char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
 | 
						char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
 | 
				
			||||||
	char *certsoutfile = NULL;
 | 
						char *certsoutfile = NULL;
 | 
				
			||||||
	const EVP_CIPHER *cipher = NULL;
 | 
						const EVP_CIPHER *cipher = NULL;
 | 
				
			||||||
@@ -122,7 +122,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int flags = CMS_DETACHED, noout = 0, print = 0;
 | 
						int flags = CMS_DETACHED, noout = 0, print = 0;
 | 
				
			||||||
	int verify_retcode = 0;
 | 
						int verify_retcode = 0;
 | 
				
			||||||
	int rr_print = 0, rr_allorfirst = -1;
 | 
						int rr_print = 0, rr_allorfirst = -1;
 | 
				
			||||||
	STACK_OF(STRING) *rr_to = NULL, *rr_from = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *rr_to = NULL, *rr_from = NULL;
 | 
				
			||||||
	CMS_ReceiptRequest *rr = NULL;
 | 
						CMS_ReceiptRequest *rr = NULL;
 | 
				
			||||||
	char *to = NULL, *from = NULL, *subject = NULL;
 | 
						char *to = NULL, *from = NULL, *subject = NULL;
 | 
				
			||||||
	char *CAfile = NULL, *CApath = NULL;
 | 
						char *CAfile = NULL, *CApath = NULL;
 | 
				
			||||||
@@ -281,8 +281,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				goto argerr;
 | 
									goto argerr;
 | 
				
			||||||
			args++;
 | 
								args++;
 | 
				
			||||||
			if (!rr_from)
 | 
								if (!rr_from)
 | 
				
			||||||
				rr_from = sk_STRING_new_null();
 | 
									rr_from = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(rr_from, *args);
 | 
								sk_OPENSSL_STRING_push(rr_from, *args);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (!strcmp(*args,"-receipt_request_to"))
 | 
							else if (!strcmp(*args,"-receipt_request_to"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -290,8 +290,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				goto argerr;
 | 
									goto argerr;
 | 
				
			||||||
			args++;
 | 
								args++;
 | 
				
			||||||
			if (!rr_to)
 | 
								if (!rr_to)
 | 
				
			||||||
				rr_to = sk_STRING_new_null();
 | 
									rr_to = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(rr_to, *args);
 | 
								sk_OPENSSL_STRING_push(rr_to, *args);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (!strcmp (*args, "-print"))
 | 
							else if (!strcmp (*args, "-print"))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -387,13 +387,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (signerfile)
 | 
								if (signerfile)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if (!sksigners)
 | 
									if (!sksigners)
 | 
				
			||||||
					sksigners = sk_STRING_new_null();
 | 
										sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(sksigners, signerfile);
 | 
									sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
				if (!keyfile)
 | 
									if (!keyfile)
 | 
				
			||||||
					keyfile = signerfile;
 | 
										keyfile = signerfile;
 | 
				
			||||||
				if (!skkeys)
 | 
									if (!skkeys)
 | 
				
			||||||
					skkeys = sk_STRING_new_null();
 | 
										skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(skkeys, keyfile);
 | 
									sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
				keyfile = NULL;
 | 
									keyfile = NULL;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			signerfile = *++args;
 | 
								signerfile = *++args;
 | 
				
			||||||
@@ -435,12 +435,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
					goto argerr;
 | 
										goto argerr;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				if (!sksigners)
 | 
									if (!sksigners)
 | 
				
			||||||
					sksigners = sk_STRING_new_null();
 | 
										sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(sksigners, signerfile);
 | 
									sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
				signerfile = NULL;
 | 
									signerfile = NULL;
 | 
				
			||||||
				if (!skkeys)
 | 
									if (!skkeys)
 | 
				
			||||||
					skkeys = sk_STRING_new_null();
 | 
										skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(skkeys, keyfile);
 | 
									sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			keyfile = *++args;
 | 
								keyfile = *++args;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -539,13 +539,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if (signerfile)
 | 
							if (signerfile)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (!sksigners)
 | 
								if (!sksigners)
 | 
				
			||||||
				sksigners = sk_STRING_new_null();
 | 
									sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(sksigners, signerfile);
 | 
								sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
			if (!skkeys)
 | 
								if (!skkeys)
 | 
				
			||||||
				skkeys = sk_STRING_new_null();
 | 
									skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			if (!keyfile)
 | 
								if (!keyfile)
 | 
				
			||||||
				keyfile = signerfile;
 | 
									keyfile = signerfile;
 | 
				
			||||||
			sk_STRING_push(skkeys, keyfile);
 | 
								sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (!sksigners)
 | 
							if (!sksigners)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -618,7 +618,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf (bio_err, "-certsout file certificate output file\n");
 | 
							BIO_printf (bio_err, "-certsout file certificate output file\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-signer file   signer certificate file\n");
 | 
							BIO_printf (bio_err, "-signer file   signer certificate file\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-recip  file   recipient certificate file for decryption\n");
 | 
							BIO_printf (bio_err, "-recip  file   recipient certificate file for decryption\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-skeyid        use subject key identifier\n");
 | 
							BIO_printf (bio_err, "-keyid        use subject key identifier\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-in file       input file\n");
 | 
							BIO_printf (bio_err, "-in file       input file\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-inform arg    input format SMIME (default), PEM or DER\n");
 | 
							BIO_printf (bio_err, "-inform arg    input format SMIME (default), PEM or DER\n");
 | 
				
			||||||
		BIO_printf (bio_err, "-inkey file    input private key (if not signer or recipient)\n");
 | 
							BIO_printf (bio_err, "-inkey file    input private key (if not signer or recipient)\n");
 | 
				
			||||||
@@ -704,7 +704,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (secret_key && !secret_keyid)
 | 
							if (secret_key && !secret_keyid)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err, "No sectre key id\n");
 | 
								BIO_printf(bio_err, "No secret key id\n");
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -880,7 +880,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		if (!(store = setup_verify(bio_err, CAfile, CApath)))
 | 
							if (!(store = setup_verify(bio_err, CAfile, CApath)))
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		X509_STORE_set_verify_cb_func(store, cms_cb);
 | 
							X509_STORE_set_verify_cb(store, cms_cb);
 | 
				
			||||||
		if (vpm)
 | 
							if (vpm)
 | 
				
			||||||
			X509_STORE_set1_param(store, vpm);
 | 
								X509_STORE_set1_param(store, vpm);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -980,11 +980,11 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			flags |= CMS_REUSE_DIGEST;
 | 
								flags |= CMS_REUSE_DIGEST;
 | 
				
			||||||
		for (i = 0; i < sk_STRING_num(sksigners); i++)
 | 
							for (i = 0; i < sk_OPENSSL_STRING_num(sksigners); i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			CMS_SignerInfo *si;
 | 
								CMS_SignerInfo *si;
 | 
				
			||||||
			signerfile = sk_STRING_value(sksigners, i);
 | 
								signerfile = sk_OPENSSL_STRING_value(sksigners, i);
 | 
				
			||||||
			keyfile = sk_STRING_value(skkeys, i);
 | 
								keyfile = sk_OPENSSL_STRING_value(skkeys, i);
 | 
				
			||||||
			signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
 | 
								signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
 | 
				
			||||||
					e, "signer certificate");
 | 
										e, "signer certificate");
 | 
				
			||||||
			if (!signer)
 | 
								if (!signer)
 | 
				
			||||||
@@ -1160,9 +1160,9 @@ end:
 | 
				
			|||||||
	if (vpm)
 | 
						if (vpm)
 | 
				
			||||||
		X509_VERIFY_PARAM_free(vpm);
 | 
							X509_VERIFY_PARAM_free(vpm);
 | 
				
			||||||
	if (sksigners)
 | 
						if (sksigners)
 | 
				
			||||||
		sk_STRING_free(sksigners);
 | 
							sk_OPENSSL_STRING_free(sksigners);
 | 
				
			||||||
	if (skkeys)
 | 
						if (skkeys)
 | 
				
			||||||
		sk_STRING_free(skkeys);
 | 
							sk_OPENSSL_STRING_free(skkeys);
 | 
				
			||||||
	if (secret_key)
 | 
						if (secret_key)
 | 
				
			||||||
		OPENSSL_free(secret_key);
 | 
							OPENSSL_free(secret_key);
 | 
				
			||||||
	if (secret_keyid)
 | 
						if (secret_keyid)
 | 
				
			||||||
@@ -1172,9 +1172,9 @@ end:
 | 
				
			|||||||
	if (rr)
 | 
						if (rr)
 | 
				
			||||||
		CMS_ReceiptRequest_free(rr);
 | 
							CMS_ReceiptRequest_free(rr);
 | 
				
			||||||
	if (rr_to)
 | 
						if (rr_to)
 | 
				
			||||||
		sk_STRING_free(rr_to);
 | 
							sk_OPENSSL_STRING_free(rr_to);
 | 
				
			||||||
	if (rr_from)
 | 
						if (rr_from)
 | 
				
			||||||
		sk_STRING_free(rr_from);
 | 
							sk_OPENSSL_STRING_free(rr_from);
 | 
				
			||||||
	X509_STORE_free(store);
 | 
						X509_STORE_free(store);
 | 
				
			||||||
	X509_free(cert);
 | 
						X509_free(cert);
 | 
				
			||||||
	X509_free(recip);
 | 
						X509_free(recip);
 | 
				
			||||||
@@ -1296,7 +1296,7 @@ static void receipt_request_print(BIO *out, CMS_ContentInfo *cms)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK_OF(STRING) *ns)
 | 
					static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK_OF(OPENSSL_STRING) *ns)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	STACK_OF(GENERAL_NAMES) *ret;
 | 
						STACK_OF(GENERAL_NAMES) *ret;
 | 
				
			||||||
@@ -1305,9 +1305,9 @@ static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK_OF(STRING) *ns)
 | 
				
			|||||||
	ret = sk_GENERAL_NAMES_new_null();
 | 
						ret = sk_GENERAL_NAMES_new_null();
 | 
				
			||||||
	if (!ret)
 | 
						if (!ret)
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
	for (i = 0; i < sk_STRING_num(ns); i++)
 | 
						for (i = 0; i < sk_OPENSSL_STRING_num(ns); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		char *str = sk_STRING_value(ns, i);
 | 
							char *str = sk_OPENSSL_STRING_value(ns, i);
 | 
				
			||||||
		gen = a2i_GENERAL_NAME(NULL, NULL, NULL, GEN_EMAIL, str, 0);
 | 
							gen = a2i_GENERAL_NAME(NULL, NULL, NULL, GEN_EMAIL, str, 0);
 | 
				
			||||||
		if (!gen)
 | 
							if (!gen)
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
@@ -1335,9 +1335,9 @@ static STACK_OF(GENERAL_NAMES) *make_names_stack(STACK_OF(STRING) *ns)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static CMS_ReceiptRequest *make_receipt_request(STACK_OF(STRING) *rr_to,
 | 
					static CMS_ReceiptRequest *make_receipt_request(STACK_OF(OPENSSL_STRING) *rr_to,
 | 
				
			||||||
						int rr_allorfirst,
 | 
											int rr_allorfirst,
 | 
				
			||||||
						STACK_OF(STRING) *rr_from)
 | 
											STACK_OF(OPENSSL_STRING) *rr_from)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	STACK_OF(GENERAL_NAMES) *rct_to, *rct_from;
 | 
						STACK_OF(GENERAL_NAMES) *rct_to, *rct_from;
 | 
				
			||||||
	CMS_ReceiptRequest *rr;
 | 
						CMS_ReceiptRequest *rr;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,7 +92,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	PKCS7 *p7 = NULL;
 | 
						PKCS7 *p7 = NULL;
 | 
				
			||||||
	PKCS7_SIGNED *p7s = NULL;
 | 
						PKCS7_SIGNED *p7s = NULL;
 | 
				
			||||||
	X509_CRL *crl=NULL;
 | 
						X509_CRL *crl=NULL;
 | 
				
			||||||
	STACK_OF(STRING) *certflst=NULL;
 | 
						STACK_OF(OPENSSL_STRING) *certflst=NULL;
 | 
				
			||||||
	STACK_OF(X509_CRL) *crl_stack=NULL;
 | 
						STACK_OF(X509_CRL) *crl_stack=NULL;
 | 
				
			||||||
	STACK_OF(X509) *cert_stack=NULL;
 | 
						STACK_OF(X509) *cert_stack=NULL;
 | 
				
			||||||
	int ret=1,nocrl=0;
 | 
						int ret=1,nocrl=0;
 | 
				
			||||||
@@ -140,8 +140,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-certfile") == 0)
 | 
							else if (strcmp(*argv,"-certfile") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			if(!certflst) certflst = sk_STRING_new_null();
 | 
								if(!certflst) certflst = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(certflst,*(++argv));
 | 
								sk_OPENSSL_STRING_push(certflst,*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -226,8 +226,8 @@ bad:
 | 
				
			|||||||
	if ((cert_stack=sk_X509_new_null()) == NULL) goto end;
 | 
						if ((cert_stack=sk_X509_new_null()) == NULL) goto end;
 | 
				
			||||||
	p7s->cert=cert_stack;
 | 
						p7s->cert=cert_stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(certflst) for(i = 0; i < sk_STRING_num(certflst); i++) {
 | 
						if(certflst) for(i = 0; i < sk_OPENSSL_STRING_num(certflst); i++) {
 | 
				
			||||||
		certfile = sk_STRING_value(certflst, i);
 | 
							certfile = sk_OPENSSL_STRING_value(certflst, i);
 | 
				
			||||||
		if (add_certs_from_file(cert_stack,certfile) < 0)
 | 
							if (add_certs_from_file(cert_stack,certfile) < 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err, "error loading certificates\n");
 | 
								BIO_printf(bio_err, "error loading certificates\n");
 | 
				
			||||||
@@ -236,7 +236,7 @@ bad:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sk_STRING_free(certflst);
 | 
						sk_OPENSSL_STRING_free(certflst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (outfile == NULL)
 | 
						if (outfile == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										87
									
								
								apps/dgst.c
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								apps/dgst.c
									
									
									
									
									
								
							@@ -79,6 +79,26 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
				
			|||||||
	  const char *sig_name, const char *md_name,
 | 
						  const char *sig_name, const char *md_name,
 | 
				
			||||||
	  const char *file,BIO *bmd);
 | 
						  const char *file,BIO *bmd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void list_md_fn(const EVP_MD *m,
 | 
				
			||||||
 | 
								const char *from, const char *to, void *arg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						const char *mname;
 | 
				
			||||||
 | 
						/* Skip aliases */
 | 
				
			||||||
 | 
						if (!m)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						mname = OBJ_nid2ln(EVP_MD_type(m));
 | 
				
			||||||
 | 
						/* Skip shortnames */
 | 
				
			||||||
 | 
						if (strcmp(from, mname))
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						/* Skip clones */
 | 
				
			||||||
 | 
						if (EVP_MD_flags(m) & EVP_MD_FLAG_PKEY_DIGEST)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						if (strchr(mname, ' '))
 | 
				
			||||||
 | 
							mname= EVP_MD_name(m);
 | 
				
			||||||
 | 
						BIO_printf(arg, "-%-14s to use the %s message digest algorithm\n",
 | 
				
			||||||
 | 
								mname, mname);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int, char **);
 | 
					int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
@@ -107,7 +127,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	char *hmac_key=NULL;
 | 
						char *hmac_key=NULL;
 | 
				
			||||||
	char *mac_name=NULL;
 | 
						char *mac_name=NULL;
 | 
				
			||||||
	STACK_OF(STRING) *sigopts = NULL, *macopts = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *sigopts = NULL, *macopts = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -135,6 +155,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if ((*argv)[0] != '-') break;
 | 
							if ((*argv)[0] != '-') break;
 | 
				
			||||||
		if (strcmp(*argv,"-c") == 0)
 | 
							if (strcmp(*argv,"-c") == 0)
 | 
				
			||||||
			separator=1;
 | 
								separator=1;
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-r") == 0)
 | 
				
			||||||
 | 
								separator=2;
 | 
				
			||||||
		else if (strcmp(*argv,"-rand") == 0)
 | 
							else if (strcmp(*argv,"-rand") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) break;
 | 
								if (--argc < 1) break;
 | 
				
			||||||
@@ -210,8 +232,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1)
 | 
								if (--argc < 1)
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			if (!sigopts)
 | 
								if (!sigopts)
 | 
				
			||||||
				sigopts = sk_STRING_new_null();
 | 
									sigopts = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			if (!sigopts || !sk_STRING_push(sigopts, *(++argv)))
 | 
								if (!sigopts || !sk_OPENSSL_STRING_push(sigopts, *(++argv)))
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-macopt") == 0)
 | 
							else if (strcmp(*argv,"-macopt") == 0)
 | 
				
			||||||
@@ -219,8 +241,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1)
 | 
								if (--argc < 1)
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			if (!macopts)
 | 
								if (!macopts)
 | 
				
			||||||
				macopts = sk_STRING_new_null();
 | 
									macopts = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			if (!macopts || !sk_STRING_push(macopts, *(++argv)))
 | 
								if (!macopts || !sk_OPENSSL_STRING_push(macopts, *(++argv)))
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
 | 
							else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
 | 
				
			||||||
@@ -242,6 +264,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf(bio_err,"unknown option '%s'\n",*argv);
 | 
							BIO_printf(bio_err,"unknown option '%s'\n",*argv);
 | 
				
			||||||
		BIO_printf(bio_err,"options are\n");
 | 
							BIO_printf(bio_err,"options are\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-c              to output the digest with separating colons\n");
 | 
							BIO_printf(bio_err,"-c              to output the digest with separating colons\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-r              to output the digest in coreutils format\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-d              to output debug info\n");
 | 
							BIO_printf(bio_err,"-d              to output debug info\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-hex            output as hex dump\n");
 | 
							BIO_printf(bio_err,"-hex            output as hex dump\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-binary         output in binary form\n");
 | 
							BIO_printf(bio_err,"-binary         output in binary form\n");
 | 
				
			||||||
@@ -249,43 +272,17 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_printf(bio_err,"-verify file    verify a signature using public key in file\n");
 | 
							BIO_printf(bio_err,"-verify file    verify a signature using public key in file\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-prverify file  verify a signature using private key in file\n");
 | 
							BIO_printf(bio_err,"-prverify file  verify a signature using private key in file\n");
 | 
				
			||||||
		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,"-out filename   output to filename rather than stdout\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,"-sigopt nm:v    signature parameter\n");
 | 
							BIO_printf(bio_err,"-sigopt nm:v    signature parameter\n");
 | 
				
			||||||
		BIO_printf(bio_err,"-hmac key       create hashed MAC with key\n");
 | 
							BIO_printf(bio_err,"-hmac key       create hashed MAC with key\n");
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-mac algorithm  create MAC (not neccessarily HMAC)\n"); 
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"-macopt nm:v    MAC algorithm parameters or key\n");
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
		BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
 | 
							BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm (default)\n",
 | 
							EVP_MD_do_all_sorted(list_md_fn, bio_err);
 | 
				
			||||||
			LN_md5,LN_md5);
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_md4,LN_md4);
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_md2,LN_md2);
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_SHA
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_sha1,LN_sha1);
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_SHA256
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_sha224,LN_sha224);
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_sha256,LN_sha256);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_SHA512
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_sha384,LN_sha384);
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_sha512,LN_sha512);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_mdc2,LN_mdc2);
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			LN_ripemd160,LN_ripemd160);
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_WHIRLPOOL
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
 | 
					 | 
				
			||||||
			SN_whirlpool,SN_whirlpool);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -371,9 +368,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if (macopts)
 | 
							if (macopts)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			char *macopt;
 | 
								char *macopt;
 | 
				
			||||||
			for (i = 0; i < sk_STRING_num(macopts); i++)
 | 
								for (i = 0; i < sk_OPENSSL_STRING_num(macopts); i++)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				macopt = sk_STRING_value(macopts, i);
 | 
									macopt = sk_OPENSSL_STRING_value(macopts, i);
 | 
				
			||||||
				if (pkey_ctrl_string(mac_ctx, macopt) <= 0)
 | 
									if (pkey_ctrl_string(mac_ctx, macopt) <= 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bio_err,
 | 
										BIO_printf(bio_err,
 | 
				
			||||||
@@ -430,9 +427,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if (sigopts)
 | 
							if (sigopts)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			char *sigopt;
 | 
								char *sigopt;
 | 
				
			||||||
			for (i = 0; i < sk_STRING_num(sigopts); i++)
 | 
								for (i = 0; i < sk_OPENSSL_STRING_num(sigopts); i++)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				sigopt = sk_STRING_value(sigopts, i);
 | 
									sigopt = sk_OPENSSL_STRING_value(sigopts, i);
 | 
				
			||||||
				if (pkey_ctrl_string(pctx, sigopt) <= 0)
 | 
									if (pkey_ctrl_string(pctx, sigopt) <= 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bio_err,
 | 
										BIO_printf(bio_err,
 | 
				
			||||||
@@ -537,9 +534,9 @@ end:
 | 
				
			|||||||
	BIO_free_all(out);
 | 
						BIO_free_all(out);
 | 
				
			||||||
	EVP_PKEY_free(sigkey);
 | 
						EVP_PKEY_free(sigkey);
 | 
				
			||||||
	if (sigopts)
 | 
						if (sigopts)
 | 
				
			||||||
		sk_STRING_free(sigopts);
 | 
							sk_OPENSSL_STRING_free(sigopts);
 | 
				
			||||||
	if (macopts)
 | 
						if (macopts)
 | 
				
			||||||
		sk_STRING_free(macopts);
 | 
							sk_OPENSSL_STRING_free(macopts);
 | 
				
			||||||
	if(sigbuf) OPENSSL_free(sigbuf);
 | 
						if(sigbuf) OPENSSL_free(sigbuf);
 | 
				
			||||||
	if (bmd != NULL) BIO_free(bmd);
 | 
						if (bmd != NULL) BIO_free(bmd);
 | 
				
			||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
@@ -600,7 +597,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		len=BIO_gets(bp,(char *)buf,BUFSIZE);
 | 
							len=BIO_gets(bp,(char *)buf,BUFSIZE);
 | 
				
			||||||
		if (len <0) 
 | 
							if ((int)len <0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ERR_print_errors(bio_err);
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
@@ -608,6 +605,12 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(binout) BIO_write(out, buf, len);
 | 
						if(binout) BIO_write(out, buf, len);
 | 
				
			||||||
 | 
						else if (sep == 2)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							for (i=0; i<(int)len; i++)
 | 
				
			||||||
 | 
								BIO_printf(out, "%02x",buf[i]);
 | 
				
			||||||
 | 
							BIO_printf(out, " *%s\n", file);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	else 
 | 
						else 
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (sig_name)
 | 
							if (sig_name)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								apps/dh.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								apps/dh.c
									
									
									
									
									
								
							@@ -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());
 | 
				
			||||||
@@ -349,4 +346,10 @@ end:
 | 
				
			|||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_DH */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
@@ -554,4 +551,10 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
 | 
				
			|||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_DH */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								apps/dsa.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								apps/dsa.c
									
									
									
									
									
								
							@@ -334,6 +334,7 @@ bad:
 | 
				
			|||||||
			i=PEM_write_bio_DSA_PUBKEY(out,dsa);
 | 
								i=PEM_write_bio_DSA_PUBKEY(out,dsa);
 | 
				
			||||||
		else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc,
 | 
							else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc,
 | 
				
			||||||
							NULL,0,NULL, passout);
 | 
												NULL,0,NULL, passout);
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4)
 | 
				
			||||||
	} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
 | 
						} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
 | 
				
			||||||
		EVP_PKEY *pk;
 | 
							EVP_PKEY *pk;
 | 
				
			||||||
		pk = EVP_PKEY_new();
 | 
							pk = EVP_PKEY_new();
 | 
				
			||||||
@@ -345,11 +346,12 @@ bad:
 | 
				
			|||||||
		else
 | 
							else
 | 
				
			||||||
			i = i2b_PrivateKey_bio(out, pk);
 | 
								i = i2b_PrivateKey_bio(out, pk);
 | 
				
			||||||
		EVP_PKEY_free(pk);
 | 
							EVP_PKEY_free(pk);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		BIO_printf(bio_err,"bad output format specified for outfile\n");
 | 
							BIO_printf(bio_err,"bad output format specified for outfile\n");
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (!i)
 | 
						if (i <= 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"unable to write private key\n");
 | 
							BIO_printf(bio_err,"unable to write private key\n");
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
@@ -365,4 +367,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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								apps/ec.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								apps/ec.c
									
									
									
									
									
								
							@@ -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;
 | 
				
			||||||
@@ -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)) 
 | 
				
			||||||
@@ -400,4 +397,10 @@ end:
 | 
				
			|||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_EC */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
@@ -725,4 +722,10 @@ static int ecparam_print_var(BIO *out, BIGNUM *in, const char *var,
 | 
				
			|||||||
	BIO_printf(out, "\n\t};\n\n");
 | 
						BIO_printf(out, "\n\t};\n\n");
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_EC */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								apps/enc.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								apps/enc.c
									
									
									
									
									
								
							@@ -101,9 +101,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;
 | 
				
			||||||
@@ -243,7 +240,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) &&
 | 
				
			||||||
@@ -323,7 +325,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)
 | 
				
			||||||
@@ -391,8 +393,10 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (inf == NULL)
 | 
						if (inf == NULL)
 | 
				
			||||||
	        {
 | 
						        {
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SETVBUF_IONBF
 | 
				
			||||||
		if (bufsize != NULL)
 | 
							if (bufsize != NULL)
 | 
				
			||||||
			setvbuf(stdin, (char *)NULL, _IONBF, 0);
 | 
								setvbuf(stdin, (char *)NULL, _IONBF, 0);
 | 
				
			||||||
 | 
					#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
 | 
				
			||||||
		BIO_set_fp(in,stdin,BIO_NOCLOSE);
 | 
							BIO_set_fp(in,stdin,BIO_NOCLOSE);
 | 
				
			||||||
	        }
 | 
						        }
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
@@ -445,8 +449,10 @@ bad:
 | 
				
			|||||||
	if (outf == NULL)
 | 
						if (outf == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_set_fp(out,stdout,BIO_NOCLOSE);
 | 
							BIO_set_fp(out,stdout,BIO_NOCLOSE);
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_SETVBUF_IONBF
 | 
				
			||||||
		if (bufsize != NULL)
 | 
							if (bufsize != NULL)
 | 
				
			||||||
			setvbuf(stdout, (char *)NULL, _IONBF, 0);
 | 
								setvbuf(stdout, (char *)NULL, _IONBF, 0);
 | 
				
			||||||
 | 
					#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */
 | 
				
			||||||
#ifdef OPENSSL_SYS_VMS
 | 
					#ifdef OPENSSL_SYS_VMS
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO *tmpbio = BIO_new(BIO_f_linebuffer());
 | 
							BIO *tmpbio = BIO_new(BIO_f_linebuffer());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -200,7 +200,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
 | 
				
			|||||||
	char *desc = NULL;
 | 
						char *desc = NULL;
 | 
				
			||||||
	int flags;
 | 
						int flags;
 | 
				
			||||||
	int xpos = 0;
 | 
						int xpos = 0;
 | 
				
			||||||
	STACK_OF(STRING) *cmds = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *cmds = NULL;
 | 
				
			||||||
	if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
 | 
						if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
 | 
				
			||||||
			((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
 | 
								((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
 | 
				
			||||||
					0, NULL, NULL)) <= 0))
 | 
										0, NULL, NULL)) <= 0))
 | 
				
			||||||
@@ -211,7 +211,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
 | 
				
			|||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cmds = sk_STRING_new_null();
 | 
						cmds = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!cmds)
 | 
						if(!cmds)
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
@@ -284,16 +284,16 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
 | 
				
			|||||||
		BIO_printf(bio_out, "\n");
 | 
							BIO_printf(bio_out, "\n");
 | 
				
			||||||
	ret = 1;
 | 
						ret = 1;
 | 
				
			||||||
err:
 | 
					err:
 | 
				
			||||||
	if(cmds) sk_STRING_pop_free(cmds, identity);
 | 
						if(cmds) sk_OPENSSL_STRING_pop_free(cmds, identity);
 | 
				
			||||||
	if(name) OPENSSL_free(name);
 | 
						if(name) OPENSSL_free(name);
 | 
				
			||||||
	if(desc) OPENSSL_free(desc);
 | 
						if(desc) OPENSSL_free(desc);
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void util_do_cmds(ENGINE *e, STACK_OF(STRING) *cmds, BIO *bio_out,
 | 
					static void util_do_cmds(ENGINE *e, STACK_OF(OPENSSL_STRING) *cmds,
 | 
				
			||||||
			 const char *indent)
 | 
								BIO *bio_out, const char *indent)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int loop, res, num = sk_STRING_num(cmds);
 | 
						int loop, res, num = sk_OPENSSL_STRING_num(cmds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(num < 0)
 | 
						if(num < 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -304,7 +304,7 @@ static void util_do_cmds(ENGINE *e, STACK_OF(STRING) *cmds, BIO *bio_out,
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		char buf[256];
 | 
							char buf[256];
 | 
				
			||||||
		const char *cmd, *arg;
 | 
							const char *cmd, *arg;
 | 
				
			||||||
		cmd = sk_STRING_value(cmds, loop);
 | 
							cmd = sk_OPENSSL_STRING_value(cmds, loop);
 | 
				
			||||||
		res = 1; /* assume success */
 | 
							res = 1; /* assume success */
 | 
				
			||||||
		/* Check if this command has no ":arg" */
 | 
							/* Check if this command has no ":arg" */
 | 
				
			||||||
		if((arg = strstr(cmd, ":")) == NULL)
 | 
							if((arg = strstr(cmd, ":")) == NULL)
 | 
				
			||||||
@@ -344,9 +344,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	const char **pp;
 | 
						const char **pp;
 | 
				
			||||||
	int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
 | 
						int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
 | 
				
			||||||
	ENGINE *e;
 | 
						ENGINE *e;
 | 
				
			||||||
	STACK_OF(STRING) *engines = sk_STRING_new_null();
 | 
						STACK_OF(OPENSSL_STRING) *engines = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
	STACK_OF(STRING) *pre_cmds = sk_STRING_new_null();
 | 
						STACK_OF(OPENSSL_STRING) *pre_cmds = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
	STACK_OF(STRING) *post_cmds = sk_STRING_new_null();
 | 
						STACK_OF(OPENSSL_STRING) *post_cmds = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
	int badops=1;
 | 
						int badops=1;
 | 
				
			||||||
	BIO *bio_out=NULL;
 | 
						BIO *bio_out=NULL;
 | 
				
			||||||
	const char *indent = "     ";
 | 
						const char *indent = "     ";
 | 
				
			||||||
@@ -393,20 +393,20 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			argc--; argv++;
 | 
								argc--; argv++;
 | 
				
			||||||
			if (argc == 0)
 | 
								if (argc == 0)
 | 
				
			||||||
				goto skip_arg_loop;
 | 
									goto skip_arg_loop;
 | 
				
			||||||
			sk_STRING_push(pre_cmds,*argv);
 | 
								sk_OPENSSL_STRING_push(pre_cmds,*argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-post") == 0)
 | 
							else if (strcmp(*argv,"-post") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			argc--; argv++;
 | 
								argc--; argv++;
 | 
				
			||||||
			if (argc == 0)
 | 
								if (argc == 0)
 | 
				
			||||||
				goto skip_arg_loop;
 | 
									goto skip_arg_loop;
 | 
				
			||||||
			sk_STRING_push(post_cmds,*argv);
 | 
								sk_OPENSSL_STRING_push(post_cmds,*argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if ((strncmp(*argv,"-h",2) == 0) ||
 | 
							else if ((strncmp(*argv,"-h",2) == 0) ||
 | 
				
			||||||
				(strcmp(*argv,"-?") == 0))
 | 
									(strcmp(*argv,"-?") == 0))
 | 
				
			||||||
			goto skip_arg_loop;
 | 
								goto skip_arg_loop;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			sk_STRING_push(engines,*argv);
 | 
								sk_OPENSSL_STRING_push(engines,*argv);
 | 
				
			||||||
		argc--;
 | 
							argc--;
 | 
				
			||||||
		argv++;
 | 
							argv++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -421,17 +421,17 @@ skip_arg_loop:
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (sk_STRING_num(engines) == 0)
 | 
						if (sk_OPENSSL_STRING_num(engines) == 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
 | 
							for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			sk_STRING_push(engines,(char *)ENGINE_get_id(e));
 | 
								sk_OPENSSL_STRING_push(engines,(char *)ENGINE_get_id(e));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i=0; i<sk_STRING_num(engines); i++)
 | 
						for (i=0; i<sk_OPENSSL_STRING_num(engines); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		const char *id = sk_STRING_value(engines,i);
 | 
							const char *id = sk_OPENSSL_STRING_value(engines,i);
 | 
				
			||||||
		if ((e = ENGINE_by_id(id)) != NULL)
 | 
							if ((e = ENGINE_by_id(id)) != NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			const char *name = ENGINE_get_name(e);
 | 
								const char *name = ENGINE_get_name(e);
 | 
				
			||||||
@@ -533,9 +533,9 @@ skip_pmeths:
 | 
				
			|||||||
end:
 | 
					end:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ERR_print_errors(bio_err);
 | 
						ERR_print_errors(bio_err);
 | 
				
			||||||
	sk_STRING_pop_free(engines, identity);
 | 
						sk_OPENSSL_STRING_pop_free(engines, identity);
 | 
				
			||||||
	sk_STRING_pop_free(pre_cmds, identity);
 | 
						sk_OPENSSL_STRING_pop_free(pre_cmds, identity);
 | 
				
			||||||
	sk_STRING_pop_free(post_cmds, identity);
 | 
						sk_OPENSSL_STRING_pop_free(post_cmds, identity);
 | 
				
			||||||
	if (bio_out != NULL) BIO_free_all(bio_out);
 | 
						if (bio_out != NULL) BIO_free_all(bio_out);
 | 
				
			||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								apps/gendh.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								apps/gendh.c
									
									
									
									
									
								
							@@ -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());
 | 
				
			||||||
@@ -235,4 +232,10 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_DH */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -105,9 +105,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);
 | 
				
			||||||
@@ -265,6 +265,13 @@ 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);
 | 
				
			||||||
 | 
					#ifdef OPENSSL_NO_ENGINE
 | 
				
			||||||
 | 
						rsa = RSA_new();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						rsa = RSA_new_method(e);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (!rsa)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
 | 
						if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										107
									
								
								apps/install-apps.com
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										107
									
								
								apps/install-apps.com
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					$! INSTALL.COM -- Installs the files in a given directory tree
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Author: Richard Levitte <richard@levitte.org>
 | 
				
			||||||
 | 
					$! Time of creation: 22-MAY-1998 10:13
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! P1  root of the directory tree
 | 
				
			||||||
 | 
					$! P2  "64" for 64-bit pointers.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Announce/identify.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment( "procedure")
 | 
				
			||||||
 | 
					$ write sys$output "@@@ "+ -
 | 
				
			||||||
 | 
					   f$parse( proc, , , "name")+ f$parse( proc, , , "type")
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ on error then goto tidy
 | 
				
			||||||
 | 
					$ on control_c then goto tidy
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (p1 .eqs. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   write sys$output "First argument missing."
 | 
				
			||||||
 | 
					$   write sys$output -
 | 
				
			||||||
 | 
					     "It should be the directory where you want things installed."
 | 
				
			||||||
 | 
					$   exit
 | 
				
			||||||
 | 
					$ 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
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ archd = arch
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (p2 .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   if (p2 .eqs. "64")
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     archd = arch+ "_64"
 | 
				
			||||||
 | 
					$   else
 | 
				
			||||||
 | 
					$     if (p2 .nes. "32")
 | 
				
			||||||
 | 
					$     then
 | 
				
			||||||
 | 
					$       write sys$output "Second argument invalid."
 | 
				
			||||||
 | 
					$       write sys$output "It should be "32", "64", or nothing."
 | 
				
			||||||
 | 
					$       exit
 | 
				
			||||||
 | 
					$     endif
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ root = f$parse( p1, "[]A.;0", , , "syntax_only, no_conceal") - "A.;0"
 | 
				
			||||||
 | 
					$ root_dev = f$parse(root,,,"device","syntax_only")
 | 
				
			||||||
 | 
					$ root_dir = f$parse(root,,,"directory","syntax_only") - -
 | 
				
			||||||
 | 
					   "[000000." - "][" - "[" - "]"
 | 
				
			||||||
 | 
					$ root = root_dev + "[" + root_dir
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ define /nolog wrk_sslroot 'root'.] /trans=conc
 | 
				
			||||||
 | 
					$ define /nolog wrk_sslxexe wrk_sslroot:['archd'_exe]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if f$parse("wrk_sslroot:[000000]") .eqs. "" then -
 | 
				
			||||||
 | 
					   create /directory /log wrk_sslroot:[000000]
 | 
				
			||||||
 | 
					$ if f$parse("wrk_sslxexe:") .eqs. "" then -
 | 
				
			||||||
 | 
					   create /directory /log wrk_sslxexe:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ exe := openssl
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ exe_dir := [-.'archd'.exe.apps]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Executables.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ i = 0
 | 
				
			||||||
 | 
					$ loop_exe:
 | 
				
			||||||
 | 
					$   e = f$edit(f$element( i, ",", exe), "trim")
 | 
				
			||||||
 | 
					$   i = i + 1
 | 
				
			||||||
 | 
					$   if e .eqs. "," then goto loop_exe_end
 | 
				
			||||||
 | 
					$   set noon
 | 
				
			||||||
 | 
					$   file = exe_dir+ e+ ".exe"
 | 
				
			||||||
 | 
					$   if f$search( file) .nes. ""
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     copy /protection = w:re 'file' wrk_sslxexe: /log
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$   set on
 | 
				
			||||||
 | 
					$ goto loop_exe
 | 
				
			||||||
 | 
					$ loop_exe_end:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Miscellaneous.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ set noon
 | 
				
			||||||
 | 
					$ copy /protection = w:re ca.com wrk_sslxexe:ca.com /log
 | 
				
			||||||
 | 
					$ copy /protection = w:re openssl-vms.cnf wrk_sslroot:[000000]openssl.cnf /log
 | 
				
			||||||
 | 
					$ set on
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ tidy:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ call deass wrk_sslroot
 | 
				
			||||||
 | 
					$ call deass wrk_sslxexe
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ exit
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ deass: subroutine
 | 
				
			||||||
 | 
					$ if (f$trnlnm( p1, "LNM$PROCESS") .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   deassign /process 'p1'
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$ endsubroutine
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
@@ -1,69 +0,0 @@
 | 
				
			|||||||
$! INSTALL.COM -- Installs the files in a given directory tree
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Author: Richard Levitte <richard@levitte.org>
 | 
					 | 
				
			||||||
$! Time of creation: 22-MAY-1998 10:13
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! P1	root of the directory tree
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$	IF P1 .EQS. ""
 | 
					 | 
				
			||||||
$	THEN
 | 
					 | 
				
			||||||
$	    WRITE SYS$OUTPUT "First argument missing."
 | 
					 | 
				
			||||||
$	    WRITE SYS$OUTPUT "Should be the directory where you want things installed."
 | 
					 | 
				
			||||||
$	    EXIT
 | 
					 | 
				
			||||||
$	ENDIF
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
 | 
					 | 
				
			||||||
$	ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
 | 
					 | 
				
			||||||
$	ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
 | 
					 | 
				
			||||||
		   - "[000000." - "][" - "[" - "]"
 | 
					 | 
				
			||||||
$	ROOT = ROOT_DEV + "[" + ROOT_DIR
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
 | 
					 | 
				
			||||||
$	DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLROOT:[000000]
 | 
					 | 
				
			||||||
$	IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN -
 | 
					 | 
				
			||||||
	   CREATE/DIR/LOG WRK_SSLVEXE:
 | 
					 | 
				
			||||||
$	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
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	VEXE_DIR := [-.VAX.EXE.APPS]
 | 
					 | 
				
			||||||
$	AEXE_DIR := [-.AXP.EXE.APPS]
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	I = 0
 | 
					 | 
				
			||||||
$ LOOP_EXE: 
 | 
					 | 
				
			||||||
$	E = F$EDIT(F$ELEMENT(I, ",", EXE),"TRIM")
 | 
					 | 
				
			||||||
$	I = I + 1
 | 
					 | 
				
			||||||
$	IF E .EQS. "," THEN GOTO LOOP_EXE_END
 | 
					 | 
				
			||||||
$	SET NOON
 | 
					 | 
				
			||||||
$	IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
 | 
					 | 
				
			||||||
$	THEN
 | 
					 | 
				
			||||||
$	  COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
 | 
					 | 
				
			||||||
$	  SET FILE/PROT=W:RE WRK_SSLVEXE:'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
 | 
					 | 
				
			||||||
$	SET ON
 | 
					 | 
				
			||||||
$	GOTO LOOP_EXE
 | 
					 | 
				
			||||||
$ LOOP_EXE_END:
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	SET NOON
 | 
					 | 
				
			||||||
$	COPY CA.COM WRK_SSLAEXE:CA.COM/LOG
 | 
					 | 
				
			||||||
$	SET FILE/PROT=W:RE WRK_SSLAEXE: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
 | 
					 | 
				
			||||||
$	SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
 | 
					 | 
				
			||||||
$	SET ON
 | 
					 | 
				
			||||||
$
 | 
					 | 
				
			||||||
$	EXIT
 | 
					 | 
				
			||||||
@@ -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.
 | 
				
			||||||
@@ -24,7 +25,7 @@ $!	   VAXC	 For VAX C.
 | 
				
			|||||||
$!	   DECC	 For DEC C.
 | 
					$!	   DECC	 For DEC C.
 | 
				
			||||||
$!	   GNUC	 For GNU C.
 | 
					$!	   GNUC	 For GNU C.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  If you don't speficy a compiler, it will try to determine which
 | 
					$!  If you don't specify a compiler, it will try to determine which
 | 
				
			||||||
$!  "C" compiler to use.
 | 
					$!  "C" compiler to use.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  P3, if defined, sets a TCP/IP library to use, through one of the following
 | 
					$!  P3, if defined, sets a TCP/IP library to use, through one of the following
 | 
				
			||||||
@@ -38,33 +39,63 @@ $!  P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!  P5, if defined, sets a choice of programs to compile.
 | 
					$!  P5, if defined, sets a choice of programs to compile.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$!  P6, if defined, specifies the C pointer size.  Ignored on VAX.
 | 
				
			||||||
 | 
					$!      ("64=ARGV" gives more efficient code with HP C V7.3 or newer.)
 | 
				
			||||||
 | 
					$!      Supported values are:
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!      ""       Compile with default (/NOPOINTER_SIZE)
 | 
				
			||||||
 | 
					$!      32       Compile with /POINTER_SIZE=32 (SHORT)
 | 
				
			||||||
 | 
					$!      64       Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV])
 | 
				
			||||||
 | 
					$!               (Automatically select ARGV if compiler supports it.)
 | 
				
			||||||
 | 
					$!      64=      Compile with /POINTER_SIZE=64 (LONG).
 | 
				
			||||||
 | 
					$!      64=ARGV  Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  P7, if defined, specifies a directory where ZLIB files (zlib.h,
 | 
				
			||||||
 | 
					$!  libz.olb) may be found.  Optionally, a non-default object library
 | 
				
			||||||
 | 
					$!  name may be included ("dev:[dir]libz_64.olb", for example).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Announce/identify.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ proc = f$environment( "procedure")
 | 
				
			||||||
 | 
					$ write sys$output "@@@ "+ -
 | 
				
			||||||
 | 
					   f$parse( proc, , , "name")+ f$parse( proc, , , "type")
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ on control_c then goto exit
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Define A TCP/IP Library That We Will Need To Link To.
 | 
					$! Define A TCP/IP Library That We Will Need To Link To.
 | 
				
			||||||
$! (That Is, If We Need To Link To One.)
 | 
					$! (That Is, If We Need To Link To One.)
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ TCPIP_LIB = ""
 | 
					$ TCPIP_LIB = ""
 | 
				
			||||||
 | 
					$ ZLIB_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.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$ ARCHD = ARCH
 | 
				
			||||||
 | 
					$ LIB32 = "32"
 | 
				
			||||||
 | 
					$ OPT_FILE = ""
 | 
				
			||||||
 | 
					$ POINTER_SIZE = ""
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$! Define what programs should be compiled
 | 
					$! Define what programs should be compiled
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ PROGRAMS := OPENSSL
 | 
					$ PROGRAMS := OPENSSL
 | 
				
			||||||
@@ -73,25 +104,40 @@ $! Check To Make Sure We Have Valid Command Line Parameters.
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ GOSUB CHECK_OPTIONS
 | 
					$ GOSUB CHECK_OPTIONS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$! Define The CRYPTO Library.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ CRYPTO_LIB := SYS$DISK:[-.'ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO'LIB32'.OLB
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Define The SSL Library.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ SSL_LIB := SYS$DISK:[-.'ARCHD'.EXE.SSL]SSL_LIBSSL'LIB32'.OLB
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Define The OBJ and EXE Directories.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ OBJ_DIR := SYS$DISK:[-.'ARCHD'.OBJ.APPS]
 | 
				
			||||||
 | 
					$ EXE_DIR := SYS$DISK:[-.'ARCHD'.EXE.APPS]
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Specify the destination directory in any /MAP option.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (LINKMAP .eqs. "MAP")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   LINKMAP = LINKMAP+ "=''EXE_DIR'"
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Add the location prefix to the linker options file name.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (OPT_FILE .nes. "")
 | 
				
			||||||
 | 
					$ then
 | 
				
			||||||
 | 
					$   OPT_FILE = EXE_DIR+ OPT_FILE
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$! Initialise logical names and such
 | 
					$! Initialise logical names and such
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ GOSUB INITIALISE
 | 
					$ GOSUB INITIALISE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Tell The User What Kind of Machine We Run On.
 | 
					$! Tell The User What Kind of Machine We Run On.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
 | 
					$ WRITE SYS$OUTPUT "Host system architecture: ''ARCHD'"
 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Define The CRYPTO Library.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ CRYPTO_LIB := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Define The SSL Library.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Define The OBJ Directory.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS]
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Check To See If The OBJ Directory Exists.
 | 
					$! Check To See If The OBJ Directory Exists.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -106,10 +152,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."")
 | 
				
			||||||
@@ -132,6 +174,9 @@ $!
 | 
				
			|||||||
$ 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_OPENSSL = "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,"+-
 | 
				
			||||||
@@ -140,13 +185,16 @@ $ LIB_OPENSSL = "VERIFY,ASN1PARS,REQ,DGST,DH,DHPARAM,ENC,PASSWD,GENDH,ERRSTR,"+-
 | 
				
			|||||||
	      	"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,PKEY,PKEYPARAM,PKEYUTL,"+ -
 | 
						      	"CIPHERS,NSEQ,PKCS12,PKCS8,PKEY,PKEYPARAM,PKEYUTL,"+ -
 | 
				
			||||||
	      	"SPKAC,SMIME,CMS,RAND,ENGINE,OCSP,PRIME,TS"
 | 
						      	"SPKAC,SMIME,CMS,RAND,ENGINE,OCSP,PRIME,TS"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ LIB_OPENSSL = LIB_OPENSSL+ ",VMS_DECC_INIT"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$ 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
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -164,6 +212,10 @@ $!  Make The Application File Name
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ CURRENT_APP = F$EDIT(F$ELEMENT(APP_COUNTER,",",PROGRAMS),"TRIM")
 | 
					$ CURRENT_APP = F$EDIT(F$ELEMENT(APP_COUNTER,",",PROGRAMS),"TRIM")
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$!  Create The Executable File Name.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   EXE_FILE = EXE_DIR + CURRENT_APP + ".EXE"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$!  Check To See If We Are At The End Of The File List.
 | 
					$!  Check To See If We Are At The End Of The File List.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (CURRENT_APP.EQS.",")
 | 
					$ IF (CURRENT_APP.EQS.",")
 | 
				
			||||||
@@ -193,7 +245,7 @@ $   LIB_COUNTER = -1
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Create a .OPT file for the object files
 | 
					$!  Create a .OPT file for the object files
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   OPEN/WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
 | 
					$   OPEN /WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Top Of The File Loop.
 | 
					$!  Top Of The File Loop.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -227,10 +279,6 @@ $!
 | 
				
			|||||||
$!  Create The Object File Name.
 | 
					$!  Create The Object File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
 | 
					$   OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$!  Create The Executable File Name.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$   EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
 | 
					 | 
				
			||||||
$   ON WARNING THEN GOTO NEXT_LIB
 | 
					$   ON WARNING THEN GOTO NEXT_LIB
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Check To See If The File We Want To Compile Actually Exists.
 | 
					$!  Check To See If The File We Want To Compile Actually Exists.
 | 
				
			||||||
@@ -284,34 +332,18 @@ $   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.
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ON WARNING THEN GOTO NEXT_APP
 | 
					$ ON WARNING THEN GOTO NEXT_APP
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (TCPIP_LIB.NES."")
 | 
					 | 
				
			||||||
$ 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' /'LINKMAP' /'TRACEBACK' /EXE='EXE_FILE' -
 | 
				
			||||||
	'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
 | 
					  'EXE_DIR''CURRENT_APP'.OPT /OPTIONS, -
 | 
				
			||||||
        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
					  'SSL_LIB' /LIBRARY, -
 | 
				
			||||||
        'TCPIP_LIB','OPT_FILE'/OPTION
 | 
					  'CRYPTO_LIB' /LIBRARY -
 | 
				
			||||||
$!
 | 
					  'TCPIP_LIB' -
 | 
				
			||||||
$! Else...
 | 
					  'ZLIB_LIB' -
 | 
				
			||||||
$!
 | 
					  ,'OPT_FILE' /OPTIONS
 | 
				
			||||||
$ ELSE
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
 | 
					 | 
				
			||||||
	'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
 | 
					 | 
				
			||||||
        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
 | 
					 | 
				
			||||||
        'OPT_FILE'/OPTION
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$! End The TCP/IP Library Check.
 | 
					 | 
				
			||||||
$!
 | 
					 | 
				
			||||||
$ ENDIF
 | 
					 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Go Back And Do It Again.
 | 
					$! Go Back And Do It Again.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -346,7 +378,7 @@ $!
 | 
				
			|||||||
$     CREATE 'OPT_FILE'
 | 
					$     CREATE 'OPT_FILE'
 | 
				
			||||||
$DECK
 | 
					$DECK
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
! Default System Options File To Link Agianst 
 | 
					! Default System Options File To Link Against 
 | 
				
			||||||
! The Sharable VAX C Runtime Library.
 | 
					! The Sharable VAX C Runtime Library.
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
SYS$SHARE:VAXCRTL.EXE/SHARE
 | 
					SYS$SHARE:VAXCRTL.EXE/SHARE
 | 
				
			||||||
@@ -375,7 +407,7 @@ $!
 | 
				
			|||||||
$     CREATE 'OPT_FILE'
 | 
					$     CREATE 'OPT_FILE'
 | 
				
			||||||
$DECK
 | 
					$DECK
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
! Default System Options File To Link Agianst 
 | 
					! Default System Options File To Link Against 
 | 
				
			||||||
! The Sharable C Runtime Library.
 | 
					! The Sharable C Runtime Library.
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
GNU_CC:[000000]GCCLIB/LIBRARY
 | 
					GNU_CC:[000000]GCCLIB/LIBRARY
 | 
				
			||||||
@@ -410,7 +442,7 @@ $!
 | 
				
			|||||||
$       CREATE 'OPT_FILE'
 | 
					$       CREATE 'OPT_FILE'
 | 
				
			||||||
$DECK
 | 
					$DECK
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
! Default System Options File To Link Agianst 
 | 
					! Default System Options File To Link Against 
 | 
				
			||||||
! The Sharable DEC C Runtime Library.
 | 
					! The Sharable DEC C Runtime Library.
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
SYS$SHARE:DECC$SHR.EXE/SHARE
 | 
					SYS$SHARE:DECC$SHR.EXE/SHARE
 | 
				
			||||||
@@ -420,19 +452,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 Against 
 | 
				
			||||||
! 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
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -509,14 +541,15 @@ $!
 | 
				
			|||||||
$ IF (P1.EQS."NODEBUG")
 | 
					$ IF (P1.EQS."NODEBUG")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!   P1 Is NODEBUG, So Compile Without Debugger Information.
 | 
					$!  P1 Is NODEBUG, So Compile Without Debugger Information.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$    DEBUGGER  = "NODEBUG"
 | 
					$   DEBUGGER  = "NODEBUG"
 | 
				
			||||||
$    TRACEBACK = "NOTRACEBACK" 
 | 
					$   LINKMAP = "NOMAP"
 | 
				
			||||||
$    GCC_OPTIMIZE = "OPTIMIZE"
 | 
					$   TRACEBACK = "NOTRACEBACK" 
 | 
				
			||||||
$    CC_OPTIMIZE = "OPTIMIZE"
 | 
					$   GCC_OPTIMIZE = "OPTIMIZE"
 | 
				
			||||||
$    WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
 | 
					$   CC_OPTIMIZE = "OPTIMIZE"
 | 
				
			||||||
$    WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
 | 
					$   WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
 | 
				
			||||||
 | 
					$   WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Else...
 | 
					$! Else...
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -530,6 +563,7 @@ $!
 | 
				
			|||||||
$!    Compile With Debugger Information.
 | 
					$!    Compile With Debugger Information.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     DEBUGGER  = "DEBUG"
 | 
					$     DEBUGGER  = "DEBUG"
 | 
				
			||||||
 | 
					$     LINKMAP = "MAP"
 | 
				
			||||||
$     TRACEBACK = "TRACEBACK"
 | 
					$     TRACEBACK = "TRACEBACK"
 | 
				
			||||||
$     GCC_OPTIMIZE = "NOOPTIMIZE"
 | 
					$     GCC_OPTIMIZE = "NOOPTIMIZE"
 | 
				
			||||||
$     CC_OPTIMIZE = "NOOPTIMIZE"
 | 
					$     CC_OPTIMIZE = "NOOPTIMIZE"
 | 
				
			||||||
@@ -537,7 +571,7 @@ $     WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
 | 
				
			|||||||
$     WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
 | 
					$     WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
 | 
				
			||||||
$   ELSE
 | 
					$   ELSE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Tell The User Entered An Invalid Option..
 | 
					$!    Tell The User Entered An Invalid Option.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     WRITE SYS$OUTPUT ""
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
$     WRITE SYS$OUTPUT "The Option ",P1," Is Invalid.  The Valid Options Are:"
 | 
					$     WRITE SYS$OUTPUT "The Option ",P1," Is Invalid.  The Valid Options Are:"
 | 
				
			||||||
@@ -550,7 +584,7 @@ $!    Time To EXIT.
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$     EXIT
 | 
					$     EXIT
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End The Valid Arguement Check.
 | 
					$!  End The Valid Argument Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   ENDIF
 | 
					$   ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -558,6 +592,87 @@ $! End The P1 Check.
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
 | 
					$! Check P6 (POINTER_SIZE).
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ IF (P6 .NES. "") .AND. (ARCH .NES. "VAX")
 | 
				
			||||||
 | 
					$ THEN
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   IF (P6 .EQS. "32")
 | 
				
			||||||
 | 
					$   THEN
 | 
				
			||||||
 | 
					$     POINTER_SIZE = " /POINTER_SIZE=32"
 | 
				
			||||||
 | 
					$   ELSE
 | 
				
			||||||
 | 
					$     POINTER_SIZE = F$EDIT( P6, "COLLAPSE, UPCASE")
 | 
				
			||||||
 | 
					$     IF ((POINTER_SIZE .EQS. "64") .OR. -
 | 
				
			||||||
 | 
					       (POINTER_SIZE .EQS. "64=") .OR. -
 | 
				
			||||||
 | 
					       (POINTER_SIZE .EQS. "64=ARGV"))
 | 
				
			||||||
 | 
					$     THEN
 | 
				
			||||||
 | 
					$       ARCHD = ARCH+ "_64"
 | 
				
			||||||
 | 
					$       LIB32 = ""
 | 
				
			||||||
 | 
					$       IF (F$EXTRACT( 2, 1, POINTER_SIZE) .EQS. "=")
 | 
				
			||||||
 | 
					$       THEN
 | 
				
			||||||
 | 
					$!        Explicit user choice: "64" or "64=ARGV".
 | 
				
			||||||
 | 
					$         IF (POINTER_SIZE .EQS. "64=") THEN POINTER_SIZE = "64"
 | 
				
			||||||
 | 
					$       ELSE
 | 
				
			||||||
 | 
					$         SET NOON
 | 
				
			||||||
 | 
					$         DEFINE /USER_MODE SYS$OUTPUT NL:
 | 
				
			||||||
 | 
					$         DEFINE /USER_MODE SYS$ERROR NL:
 | 
				
			||||||
 | 
					$         CC /NOLIST /NOOBJECT /POINTER_SIZE=64=ARGV NL:
 | 
				
			||||||
 | 
					$         IF ($STATUS .AND. %X0FFF0000) .EQ. %X00030000
 | 
				
			||||||
 | 
					$         THEN
 | 
				
			||||||
 | 
					$           ! If we got here, it means DCL complained like this:
 | 
				
			||||||
 | 
					$           ! %DCL-W-NOVALU, value not allowed - remove value specification
 | 
				
			||||||
 | 
					$           !  \64=\
 | 
				
			||||||
 | 
					$           !
 | 
				
			||||||
 | 
					$           ! If the compiler was run, logicals defined in /USER would
 | 
				
			||||||
 | 
					$           ! have been deassigned automatically.  However, when DCL
 | 
				
			||||||
 | 
					$           ! complains, they aren't, so we do it here (it might be
 | 
				
			||||||
 | 
					$           ! unnecessary, but just in case there will be another error
 | 
				
			||||||
 | 
					$           ! message further on that we don't want to miss)
 | 
				
			||||||
 | 
					$           DEASSIGN /USER_MODE SYS$ERROR
 | 
				
			||||||
 | 
					$           DEASSIGN /USER_MODE SYS$OUTPUT
 | 
				
			||||||
 | 
					$         ELSE
 | 
				
			||||||
 | 
					$           POINTER_SIZE = POINTER_SIZE + "=ARGV"
 | 
				
			||||||
 | 
					$         ENDIF
 | 
				
			||||||
 | 
					$         SET ON
 | 
				
			||||||
 | 
					$       ENDIF
 | 
				
			||||||
 | 
					$       POINTER_SIZE = " /POINTER_SIZE=''POINTER_SIZE'"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$     ELSE
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!      Tell The User Entered An Invalid Option.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT "The Option ", P6, -
 | 
				
			||||||
 | 
					         " Is Invalid.  The Valid Options Are:"
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
					         "    """"  :  Compile with default (short) pointers."
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
					         "    32  :  Compile with 32-bit (short) pointers."
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
					         "    64       :  Compile with 64-bit (long) pointers (auto ARGV)."
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
					         "    64=      :  Compile with 64-bit (long) pointers (no ARGV)."
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT -
 | 
				
			||||||
 | 
					         "    64=ARGV  :  Compile with 64-bit (long) pointers (ARGV)."
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$! 
 | 
				
			||||||
 | 
					$!      Time To EXIT.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$       EXIT
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$     ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! End The P6 (POINTER_SIZE) Check.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Set basic C compiler /INCLUDE directories.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ CC_INCLUDES = "SYS$DISK:[-],SYS$DISK:[-.CRYPTO]"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
$! Check To See If P2 Is Blank.
 | 
					$! Check To See If P2 Is Blank.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (P2.EQS."")
 | 
					$ IF (P2.EQS."")
 | 
				
			||||||
@@ -581,7 +696,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.
 | 
				
			||||||
@@ -658,11 +773,64 @@ $ CCDEFS = "MONOLITH"
 | 
				
			|||||||
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
 | 
					$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
 | 
				
			||||||
$ CCEXTRAFLAGS = ""
 | 
					$ CCEXTRAFLAGS = ""
 | 
				
			||||||
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
 | 
					$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
 | 
				
			||||||
$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
 | 
					$ CCDISABLEWARNINGS = "" !!! "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
 | 
				
			||||||
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
 | 
					$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
 | 
				
			||||||
	CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
 | 
						CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Check To See If The User Entered A Valid Paramter.
 | 
					$! Check To See If We Have A ZLIB Option.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ ZLIB = P7
 | 
				
			||||||
 | 
					$ IF (ZLIB .NES. "")
 | 
				
			||||||
 | 
					$ THEN
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Check for expected ZLIB files.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   err = 0
 | 
				
			||||||
 | 
					$   file1 = f$parse( "zlib.h", ZLIB, , , "SYNTAX_ONLY")
 | 
				
			||||||
 | 
					$   if (f$search( file1) .eqs. "")
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "    Can't find header: ''file1'"
 | 
				
			||||||
 | 
					$     err = 1
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$   file1 = f$parse( "A.;", ZLIB)- "A.;"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   file2 = f$parse( ZLIB, "libz.olb", , , "SYNTAX_ONLY")
 | 
				
			||||||
 | 
					$   if (f$search( file2) .eqs. "")
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     if (err .eq. 0)
 | 
				
			||||||
 | 
					$     then
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$       WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
 | 
				
			||||||
 | 
					$     endif
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT "    Can't find library: ''file2'"
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$     err = err+ 2
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$   if (err .eq. 1)
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     WRITE SYS$OUTPUT ""
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   if (err .ne. 0)
 | 
				
			||||||
 | 
					$   then
 | 
				
			||||||
 | 
					$     EXIT
 | 
				
			||||||
 | 
					$   endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   CCDEFS = """ZLIB=1"", "+ CCDEFS
 | 
				
			||||||
 | 
					$   CC_INCLUDES = CC_INCLUDES+ ", "+ file1
 | 
				
			||||||
 | 
					$   ZLIB_LIB = ", ''file2' /library"
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Print info
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$   WRITE SYS$OUTPUT "ZLIB library spec: ", file2
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! End The ZLIB Check.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ ENDIF
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$!  Check To See If The User Entered A Valid Parameter.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF (P2.EQS."VAXC").OR.(P2.EQS."DECC").OR.(P2.EQS."GNUC")
 | 
					$ IF (P2.EQS."VAXC").OR.(P2.EQS."DECC").OR.(P2.EQS."GNUC")
 | 
				
			||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
@@ -685,13 +853,13 @@ $!
 | 
				
			|||||||
$     CC = "CC"
 | 
					$     CC = "CC"
 | 
				
			||||||
$     IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
 | 
					$     IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
 | 
				
			||||||
	 THEN CC = "CC/DECC"
 | 
						 THEN CC = "CC/DECC"
 | 
				
			||||||
$     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
 | 
					$     CC = CC + " /''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=RELAXED"+ -
 | 
				
			||||||
           "/NOLIST/PREFIX=ALL" + -
 | 
					       "''POINTER_SIZE' /NOLIST /PREFIX=ALL" + -
 | 
				
			||||||
	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
 | 
					       " /INCLUDE=(''CC_INCLUDES') " + CCEXTRAFLAGS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define The Linker Options File Name.
 | 
					$!    Define The Linker Options File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
 | 
					$     OPT_FILE = "VAX_DECC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End DECC Check.
 | 
					$!  End DECC Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -712,14 +880,14 @@ $!
 | 
				
			|||||||
$!    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"
 | 
				
			||||||
$     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
 | 
					$     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
 | 
				
			||||||
	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
 | 
						   "/INCLUDE=(''CC_INCLUDES')" + CCEXTRAFLAGS
 | 
				
			||||||
$     CCDEFS = CCDEFS + ",""VAXC"""
 | 
					$     CCDEFS = CCDEFS + ",""VAXC"""
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define <sys> As SYS$COMMON:[SYSLIB]
 | 
					$!    Define <sys> As SYS$COMMON:[SYSLIB]
 | 
				
			||||||
@@ -728,7 +896,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 = "VAX_VAXC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End VAXC Check
 | 
					$!  End VAXC Check
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -751,11 +919,11 @@ $!    Use GNU C...
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$     IF F$TYPE(GCC) .EQS. "" THEN GCC := GCC
 | 
					$     IF F$TYPE(GCC) .EQS. "" THEN GCC := GCC
 | 
				
			||||||
$     CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
 | 
					$     CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
 | 
				
			||||||
	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
 | 
						   "/INCLUDE=(''CC_INCLUDES')" + CCEXTRAFLAGS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Define The Linker Options File Name.
 | 
					$!    Define The Linker Options File Name.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
 | 
					$     OPT_FILE = "VAX_GNUC_OPTIONS.OPT"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  End The GNU C Check.
 | 
					$!  End The GNU C Check.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -765,7 +933,7 @@ $!  Set up default defines
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$   CCDEFS = """FLAT_INC=1""," + CCDEFS
 | 
					$   CCDEFS = """FLAT_INC=1""," + CCDEFS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Else The User Entered An Invalid Arguement.
 | 
					$!  Else The User Entered An Invalid Argument.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ELSE
 | 
					$ ELSE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -797,7 +965,7 @@ $   THEN
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Set the library to use SOCKETSHR
 | 
					$!    Set the library to use SOCKETSHR
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
 | 
					$     TCPIP_LIB = ",SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Done with SOCKETSHR
 | 
					$!    Done with SOCKETSHR
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -823,13 +991,13 @@ $   THEN
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Set the library to use UCX.
 | 
					$!    Set the library to use UCX.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
 | 
					$     TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
 | 
				
			||||||
$     IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
 | 
					$     IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
 | 
				
			||||||
$     THEN
 | 
					$     THEN
 | 
				
			||||||
$       TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
 | 
					$       TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
 | 
				
			||||||
$     ELSE
 | 
					$     ELSE
 | 
				
			||||||
$       IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
 | 
					$       IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
 | 
				
			||||||
	  TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
 | 
						  TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
 | 
				
			||||||
$     ENDIF
 | 
					$     ENDIF
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Done with UCX
 | 
					$!    Done with UCX
 | 
				
			||||||
@@ -843,7 +1011,7 @@ $   THEN
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Set the library to use TCPIP.
 | 
					$!    Set the library to use TCPIP.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$     TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
 | 
					$     TCPIP_LIB = ",SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!    Done with TCPIP
 | 
					$!    Done with TCPIP
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -868,9 +1036,9 @@ $   CCDEFS = CCDEFS + ",TCPIP_TYPE_''P3'"
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Print info
 | 
					$!  Print info
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$   WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
 | 
					$   WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB- ","
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$!  Else The User Entered An Invalid Arguement.
 | 
					$!  Else The User Entered An Invalid Argument.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ ELSE
 | 
					$ ELSE
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -898,13 +1066,13 @@ $ IF COMPILER .EQS. "DECC"
 | 
				
			|||||||
$ THEN
 | 
					$ THEN
 | 
				
			||||||
$   IF CCDISABLEWARNINGS .NES. ""
 | 
					$   IF CCDISABLEWARNINGS .NES. ""
 | 
				
			||||||
$   THEN
 | 
					$   THEN
 | 
				
			||||||
$     CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
 | 
					$     CCDISABLEWARNINGS = " /WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
 | 
				
			||||||
$   ENDIF
 | 
					$   ENDIF
 | 
				
			||||||
$ ELSE
 | 
					$ ELSE
 | 
				
			||||||
$   CCDISABLEWARNINGS = ""
 | 
					$   CCDISABLEWARNINGS = ""
 | 
				
			||||||
$ ENDIF
 | 
					$ ENDIF
 | 
				
			||||||
$ CC2 = CC + "/DEFINE=(" + CCDEFS + ",_POSIX_C_SOURCE)" + CCDISABLEWARNINGS
 | 
					$ CC2 = CC + " /DEFINE=(" + CCDEFS + ",_POSIX_C_SOURCE)" + CCDISABLEWARNINGS
 | 
				
			||||||
$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
 | 
					$ CC = CC + " /DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Show user the result
 | 
					$! Show user the result
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -970,7 +1138,7 @@ $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$! Set up the logical name OPENSSL to point at the include directory
 | 
					$! Set up the logical name OPENSSL to point at the include directory
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ DEFINE OPENSSL/NOLOG '__INCLUDE'
 | 
					$ DEFINE OPENSSL /NOLOG '__INCLUDE'
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Done
 | 
					$! Done
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
@@ -978,15 +1146,24 @@ $ RETURN
 | 
				
			|||||||
$!
 | 
					$!
 | 
				
			||||||
$ CLEANUP:
 | 
					$ CLEANUP:
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Restore the logical name OPENSSL if it had a value
 | 
					$! Restore the saved logical name OPENSSL, if it had a value.
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ IF __SAVE_OPENSSL .EQS. ""
 | 
					$ if (f$type( __SAVE_OPENSSL) .nes. "")
 | 
				
			||||||
$ THEN
 | 
					$ then
 | 
				
			||||||
$   DEASSIGN OPENSSL
 | 
					$   IF __SAVE_OPENSSL .EQS. ""
 | 
				
			||||||
$ ELSE
 | 
					$   THEN
 | 
				
			||||||
$   DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'
 | 
					$     DEASSIGN OPENSSL
 | 
				
			||||||
$ ENDIF
 | 
					$   ELSE
 | 
				
			||||||
 | 
					$     DEFINE /NOLOG OPENSSL '__SAVE_OPENSSL'
 | 
				
			||||||
 | 
					$   ENDIF
 | 
				
			||||||
 | 
					$ endif
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$! Close any open files.
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 | 
					$ if (f$trnlnm( "objects", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
 | 
				
			||||||
 | 
					   close objects
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$! Done
 | 
					$! Done
 | 
				
			||||||
$!
 | 
					$!
 | 
				
			||||||
$ RETURN
 | 
					$ RETURN
 | 
				
			||||||
 | 
					$!
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										66
									
								
								apps/ocsp.c
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								apps/ocsp.c
									
									
									
									
									
								
							@@ -62,6 +62,8 @@
 | 
				
			|||||||
				   on OpenVMS */
 | 
									   on OpenVMS */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define USE_SOCKETS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
@@ -73,6 +75,7 @@
 | 
				
			|||||||
#include <openssl/ssl.h>
 | 
					#include <openssl/ssl.h>
 | 
				
			||||||
#include <openssl/evp.h>
 | 
					#include <openssl/evp.h>
 | 
				
			||||||
#include <openssl/bn.h>
 | 
					#include <openssl/bn.h>
 | 
				
			||||||
 | 
					#include <openssl/x509v3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(NETWARE_CLIB)
 | 
					#if defined(NETWARE_CLIB)
 | 
				
			||||||
#  ifdef NETWARE_BSDSOCK
 | 
					#  ifdef NETWARE_BSDSOCK
 | 
				
			||||||
@@ -97,7 +100,7 @@ static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_m
 | 
				
			|||||||
static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, const EVP_MD * cert_id_md, X509 *issuer,
 | 
					static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, const EVP_MD * cert_id_md, X509 *issuer,
 | 
				
			||||||
				STACK_OF(OCSP_CERTID) *ids);
 | 
									STACK_OF(OCSP_CERTID) *ids);
 | 
				
			||||||
static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
 | 
					static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
 | 
				
			||||||
			      STACK_OF(STRING) *names,
 | 
								      STACK_OF(OPENSSL_STRING) *names,
 | 
				
			||||||
			      STACK_OF(OCSP_CERTID) *ids, long nsec,
 | 
								      STACK_OF(OCSP_CERTID) *ids, long nsec,
 | 
				
			||||||
			      long maxage);
 | 
								      long maxage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -111,6 +114,7 @@ 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,
 | 
					static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			||||||
 | 
									STACK_OF(CONF_VALUE) *headers,
 | 
				
			||||||
				OCSP_REQUEST *req, int req_timeout);
 | 
									OCSP_REQUEST *req, int req_timeout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef PROG
 | 
					#undef PROG
 | 
				
			||||||
@@ -129,6 +133,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	char *rsignfile = NULL, *rkeyfile = NULL;
 | 
						char *rsignfile = NULL, *rkeyfile = NULL;
 | 
				
			||||||
	char *outfile = NULL;
 | 
						char *outfile = NULL;
 | 
				
			||||||
	int add_nonce = 1, noverify = 0, use_ssl = -1;
 | 
						int add_nonce = 1, noverify = 0, use_ssl = -1;
 | 
				
			||||||
 | 
						STACK_OF(CONF_VALUE) *headers = NULL;
 | 
				
			||||||
	OCSP_REQUEST *req = NULL;
 | 
						OCSP_REQUEST *req = NULL;
 | 
				
			||||||
	OCSP_RESPONSE *resp = NULL;
 | 
						OCSP_RESPONSE *resp = NULL;
 | 
				
			||||||
	OCSP_BASICRESP *bs = NULL;
 | 
						OCSP_BASICRESP *bs = NULL;
 | 
				
			||||||
@@ -151,7 +156,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int badarg = 0;
 | 
						int badarg = 0;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	int ignore_err = 0;
 | 
						int ignore_err = 0;
 | 
				
			||||||
	STACK_OF(STRING) *reqnames = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *reqnames = NULL;
 | 
				
			||||||
	STACK_OF(OCSP_CERTID) *ids = NULL;
 | 
						STACK_OF(OCSP_CERTID) *ids = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	X509 *rca_cert = NULL;
 | 
						X509 *rca_cert = NULL;
 | 
				
			||||||
@@ -168,7 +173,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	SSL_load_error_strings();
 | 
						SSL_load_error_strings();
 | 
				
			||||||
	OpenSSL_add_ssl_algorithms();
 | 
						OpenSSL_add_ssl_algorithms();
 | 
				
			||||||
	args = argv + 1;
 | 
						args = argv + 1;
 | 
				
			||||||
	reqnames = sk_STRING_new_null();
 | 
						reqnames = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
	ids = sk_OCSP_CERTID_new_null();
 | 
						ids = sk_OCSP_CERTID_new_null();
 | 
				
			||||||
	while (!badarg && *args && *args[0] == '-')
 | 
						while (!badarg && *args && *args[0] == '-')
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -228,6 +233,16 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			else badarg = 1;
 | 
								else badarg = 1;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if (!strcmp(*args, "-header"))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								if (args[1] && args[2])
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									if (!X509V3_add_value(args[1], args[2], &headers))
 | 
				
			||||||
 | 
										goto end;
 | 
				
			||||||
 | 
									args += 2;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								else badarg = 1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if (!strcmp(*args, "-ignore_err"))
 | 
							else if (!strcmp(*args, "-ignore_err"))
 | 
				
			||||||
			ignore_err = 1;
 | 
								ignore_err = 1;
 | 
				
			||||||
		else if (!strcmp(*args, "-noverify"))
 | 
							else if (!strcmp(*args, "-noverify"))
 | 
				
			||||||
@@ -430,7 +445,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				if (!cert_id_md) cert_id_md = EVP_sha1();
 | 
									if (!cert_id_md) cert_id_md = EVP_sha1();
 | 
				
			||||||
				if(!add_ocsp_cert(&req, cert, cert_id_md, issuer, ids))
 | 
									if(!add_ocsp_cert(&req, cert, cert_id_md, issuer, ids))
 | 
				
			||||||
					goto end;
 | 
										goto end;
 | 
				
			||||||
				if(!sk_STRING_push(reqnames, *args))
 | 
									if(!sk_OPENSSL_STRING_push(reqnames, *args))
 | 
				
			||||||
					goto end;
 | 
										goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			else badarg = 1;
 | 
								else badarg = 1;
 | 
				
			||||||
@@ -443,7 +458,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				if (!cert_id_md) cert_id_md = EVP_sha1();
 | 
									if (!cert_id_md) cert_id_md = EVP_sha1();
 | 
				
			||||||
				if(!add_ocsp_serial(&req, *args, cert_id_md, issuer, ids))
 | 
									if(!add_ocsp_serial(&req, *args, cert_id_md, issuer, ids))
 | 
				
			||||||
					goto end;
 | 
										goto end;
 | 
				
			||||||
				if(!sk_STRING_push(reqnames, *args))
 | 
									if(!sk_OPENSSL_STRING_push(reqnames, *args))
 | 
				
			||||||
					goto end;
 | 
										goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			else badarg = 1;
 | 
								else badarg = 1;
 | 
				
			||||||
@@ -754,7 +769,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
#ifndef OPENSSL_NO_SOCK
 | 
					#ifndef OPENSSL_NO_SOCK
 | 
				
			||||||
		resp = process_responder(bio_err, req, host, path,
 | 
							resp = process_responder(bio_err, req, host, path,
 | 
				
			||||||
						port, use_ssl, req_timeout);
 | 
										port, use_ssl, headers, req_timeout);
 | 
				
			||||||
		if (!resp)
 | 
							if (!resp)
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@@ -899,10 +914,11 @@ end:
 | 
				
			|||||||
	OCSP_REQUEST_free(req);
 | 
						OCSP_REQUEST_free(req);
 | 
				
			||||||
	OCSP_RESPONSE_free(resp);
 | 
						OCSP_RESPONSE_free(resp);
 | 
				
			||||||
	OCSP_BASICRESP_free(bs);
 | 
						OCSP_BASICRESP_free(bs);
 | 
				
			||||||
	sk_STRING_free(reqnames);
 | 
						sk_OPENSSL_STRING_free(reqnames);
 | 
				
			||||||
	sk_OCSP_CERTID_free(ids);
 | 
						sk_OCSP_CERTID_free(ids);
 | 
				
			||||||
	sk_X509_pop_free(sign_other, X509_free);
 | 
						sk_X509_pop_free(sign_other, X509_free);
 | 
				
			||||||
	sk_X509_pop_free(verify_other, X509_free);
 | 
						sk_X509_pop_free(verify_other, X509_free);
 | 
				
			||||||
 | 
						sk_CONF_VALUE_pop_free(headers, X509V3_conf_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (use_ssl != -1)
 | 
						if (use_ssl != -1)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -969,7 +985,7 @@ static int add_ocsp_serial(OCSP_REQUEST **req, char *serial,const EVP_MD *cert_i
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
 | 
					static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
 | 
				
			||||||
			      STACK_OF(STRING) *names,
 | 
								      STACK_OF(OPENSSL_STRING) *names,
 | 
				
			||||||
			      STACK_OF(OCSP_CERTID) *ids, long nsec,
 | 
								      STACK_OF(OCSP_CERTID) *ids, long nsec,
 | 
				
			||||||
			      long maxage)
 | 
								      long maxage)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -981,13 +997,13 @@ static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
 | 
						ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!bs || !req || !sk_STRING_num(names) || !sk_OCSP_CERTID_num(ids))
 | 
						if (!bs || !req || !sk_OPENSSL_STRING_num(names) || !sk_OCSP_CERTID_num(ids))
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < sk_OCSP_CERTID_num(ids); i++)
 | 
						for (i = 0; i < sk_OCSP_CERTID_num(ids); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		id = sk_OCSP_CERTID_value(ids, i);
 | 
							id = sk_OCSP_CERTID_value(ids, i);
 | 
				
			||||||
		name = sk_STRING_value(names, i);
 | 
							name = sk_OPENSSL_STRING_value(names, i);
 | 
				
			||||||
		BIO_printf(out, "%s: ", name);
 | 
							BIO_printf(out, "%s: ", name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(!OCSP_resp_find_status(bs, id, &status, &reason,
 | 
							if(!OCSP_resp_find_status(bs, id, &status, &reason,
 | 
				
			||||||
@@ -1258,10 +1274,12 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
					static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			||||||
 | 
									STACK_OF(CONF_VALUE) *headers,
 | 
				
			||||||
				OCSP_REQUEST *req, int req_timeout)
 | 
									OCSP_REQUEST *req, int req_timeout)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int rv;
 | 
						int rv;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
	OCSP_REQ_CTX *ctx = NULL;
 | 
						OCSP_REQ_CTX *ctx = NULL;
 | 
				
			||||||
	OCSP_RESPONSE *rsp = NULL;
 | 
						OCSP_RESPONSE *rsp = NULL;
 | 
				
			||||||
	fd_set confds;
 | 
						fd_set confds;
 | 
				
			||||||
@@ -1278,16 +1296,13 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			|||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (req_timeout == -1)
 | 
					 | 
				
			||||||
		return OCSP_sendreq_bio(cbio, path, req);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (BIO_get_fd(cbio, &fd) <= 0)
 | 
						if (BIO_get_fd(cbio, &fd) <= 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_puts(err, "Can't get connection fd\n");
 | 
							BIO_puts(err, "Can't get connection fd\n");
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rv <= 0)
 | 
						if (req_timeout != -1 && rv <= 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		FD_ZERO(&confds);
 | 
							FD_ZERO(&confds);
 | 
				
			||||||
		openssl_fdset(fd, &confds);
 | 
							openssl_fdset(fd, &confds);
 | 
				
			||||||
@@ -1302,15 +1317,27 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx = OCSP_sendreq_new(cbio, path, req, -1);
 | 
						ctx = OCSP_sendreq_new(cbio, path, NULL, -1);
 | 
				
			||||||
	if (!ctx)
 | 
						if (!ctx)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < sk_CONF_VALUE_num(headers); i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							CONF_VALUE *hdr = sk_CONF_VALUE_value(headers, i);
 | 
				
			||||||
 | 
							if (!OCSP_REQ_CTX_add1_header(ctx, hdr->name, hdr->value))
 | 
				
			||||||
 | 
								goto err;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!OCSP_REQ_CTX_set1_req(ctx, req))
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		rv = OCSP_sendreq_nbio(&rsp, ctx);
 | 
							rv = OCSP_sendreq_nbio(&rsp, ctx);
 | 
				
			||||||
		if (rv != -1)
 | 
							if (rv != -1)
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
							if (req_timeout == -1)
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
		FD_ZERO(&confds);
 | 
							FD_ZERO(&confds);
 | 
				
			||||||
		openssl_fdset(fd, &confds);
 | 
							openssl_fdset(fd, &confds);
 | 
				
			||||||
		tv.tv_usec = 0;
 | 
							tv.tv_usec = 0;
 | 
				
			||||||
@@ -1334,7 +1361,7 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			|||||||
			BIO_puts(err, "Select error\n");
 | 
								BIO_puts(err, "Select error\n");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			
 | 
					
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	err:
 | 
						err:
 | 
				
			||||||
	if (ctx)
 | 
						if (ctx)
 | 
				
			||||||
@@ -1345,6 +1372,7 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
					OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
				
			||||||
			char *host, char *path, char *port, int use_ssl,
 | 
								char *host, char *path, char *port, int use_ssl,
 | 
				
			||||||
 | 
								STACK_OF(CONF_VALUE) *headers,
 | 
				
			||||||
			int req_timeout)
 | 
								int req_timeout)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BIO *cbio = NULL;
 | 
						BIO *cbio = NULL;
 | 
				
			||||||
@@ -1379,14 +1407,14 @@ OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
 | 
				
			|||||||
		sbio = BIO_new_ssl(ctx, 1);
 | 
							sbio = BIO_new_ssl(ctx, 1);
 | 
				
			||||||
		cbio = BIO_push(sbio, cbio);
 | 
							cbio = BIO_push(sbio, cbio);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	resp = query_responder(err, cbio, path, req, req_timeout);
 | 
						resp = query_responder(err, cbio, path, headers, req, req_timeout);
 | 
				
			||||||
	if (!resp)
 | 
						if (!resp)
 | 
				
			||||||
		BIO_printf(bio_err, "Error querying OCSP responsder\n");
 | 
							BIO_printf(bio_err, "Error querying OCSP responsder\n");
 | 
				
			||||||
	end:
 | 
						end:
 | 
				
			||||||
	if (ctx)
 | 
					 | 
				
			||||||
		SSL_CTX_free(ctx);
 | 
					 | 
				
			||||||
	if (cbio)
 | 
						if (cbio)
 | 
				
			||||||
		BIO_free_all(cbio);
 | 
							BIO_free_all(cbio);
 | 
				
			||||||
 | 
						if (ctx)
 | 
				
			||||||
 | 
							SSL_CTX_free(ctx);
 | 
				
			||||||
	return resp;
 | 
						return resp;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,7 +145,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
 | 
				
			||||||
@@ -231,7 +231,7 @@ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
subjectKeyIdentifier=hash
 | 
					subjectKeyIdentifier=hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
authorityKeyIdentifier=keyid:always,issuer:always
 | 
					authorityKeyIdentifier=keyid:always,issuer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This is what PKIX recommends but some broken software chokes on critical
 | 
					# This is what PKIX recommends but some broken software chokes on critical
 | 
				
			||||||
# extensions.
 | 
					# extensions.
 | 
				
			||||||
@@ -264,7 +264,7 @@ basicConstraints = CA:true
 | 
				
			|||||||
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
 | 
					# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# issuerAltName=issuer:copy
 | 
					# issuerAltName=issuer:copy
 | 
				
			||||||
authorityKeyIdentifier=keyid:always,issuer:always
 | 
					authorityKeyIdentifier=keyid:always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ proxy_cert_ext ]
 | 
					[ proxy_cert_ext ]
 | 
				
			||||||
# These extensions should be added when creating a proxy certificate
 | 
					# These extensions should be added when creating a proxy certificate
 | 
				
			||||||
@@ -297,7 +297,7 @@ nsComment			= "OpenSSL Generated Certificate"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# PKIX recommendations harmless if included in all certificates.
 | 
					# PKIX recommendations harmless if included in all certificates.
 | 
				
			||||||
subjectKeyIdentifier=hash
 | 
					subjectKeyIdentifier=hash
 | 
				
			||||||
authorityKeyIdentifier=keyid,issuer:always
 | 
					authorityKeyIdentifier=keyid,issuer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This stuff is for subjectAltName and issuerAltname.
 | 
					# This stuff is for subjectAltName and issuerAltname.
 | 
				
			||||||
# Import the email address.
 | 
					# Import the email address.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -212,8 +212,13 @@ static void lock_dbg_cb(int mode, int type, const char *file, int line)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
 | 
				
			||||||
 | 
					# define ARGV _Argv
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# define ARGV Argv
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int Argc, char *Argv[])
 | 
					int main(int Argc, char *ARGV[])
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	ARGS arg;
 | 
						ARGS arg;
 | 
				
			||||||
#define PROG_NAME_SIZE	39
 | 
					#define PROG_NAME_SIZE	39
 | 
				
			||||||
@@ -227,7 +232,55 @@ int main(int Argc, char *Argv[])
 | 
				
			|||||||
	char **argv,*p;
 | 
						char **argv,*p;
 | 
				
			||||||
	LHASH_OF(FUNCTION) *prog=NULL;
 | 
						LHASH_OF(FUNCTION) *prog=NULL;
 | 
				
			||||||
	long errline;
 | 
						long errline;
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
 | 
					#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
 | 
				
			||||||
 | 
						/* 2011-03-22 SMS.
 | 
				
			||||||
 | 
						 * If we have 32-bit pointers everywhere, then we're safe, and
 | 
				
			||||||
 | 
						 * we bypass this mess, as on non-VMS systems.  (See ARGV,
 | 
				
			||||||
 | 
						 * above.)
 | 
				
			||||||
 | 
						 * Problem 1: Compaq/HP C before V7.3 always used 32-bit
 | 
				
			||||||
 | 
						 * pointers for argv[].
 | 
				
			||||||
 | 
						 * Fix 1: For a 32-bit argv[], when we're using 64-bit pointers
 | 
				
			||||||
 | 
						 * everywhere else, we always allocate and use a 64-bit
 | 
				
			||||||
 | 
						 * duplicate of argv[].
 | 
				
			||||||
 | 
						 * Problem 2: Compaq/HP C V7.3 (Alpha, IA64) before ECO1 failed
 | 
				
			||||||
 | 
						 * to NULL-terminate a 64-bit argv[].  (As this was written, the
 | 
				
			||||||
 | 
						 * compiler ECO was available only on IA64.)
 | 
				
			||||||
 | 
						 * Fix 2: Unless advised not to (VMS_TRUST_ARGV), we test a
 | 
				
			||||||
 | 
						 * 64-bit argv[argc] for NULL, and, if necessary, use a
 | 
				
			||||||
 | 
						 * (properly) NULL-terminated (64-bit) duplicate of argv[].
 | 
				
			||||||
 | 
						 * The same code is used in either case to duplicate argv[].
 | 
				
			||||||
 | 
						 * Some of these decisions could be handled in preprocessing,
 | 
				
			||||||
 | 
						 * but the code tends to get even uglier, and the penalty for
 | 
				
			||||||
 | 
						 * deciding at compile- or run-time is tiny.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						char **Argv = NULL;
 | 
				
			||||||
 | 
						int free_Argv = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ((sizeof( _Argv) < 8)        /* 32-bit argv[]. */
 | 
				
			||||||
 | 
					# if !defined( VMS_TRUST_ARGV)
 | 
				
			||||||
 | 
						 || (_Argv[ Argc] != NULL)      /* Untrusted argv[argc] not NULL. */
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							int i;
 | 
				
			||||||
 | 
							Argv = OPENSSL_malloc( (Argc+ 1)* sizeof( char *));
 | 
				
			||||||
 | 
							if (Argv == NULL)
 | 
				
			||||||
 | 
								{ ret = -1; goto end; }
 | 
				
			||||||
 | 
							for(i = 0; i < Argc; i++)
 | 
				
			||||||
 | 
								Argv[i] = _Argv[i];
 | 
				
			||||||
 | 
							Argv[ Argc] = NULL;     /* Certain NULL termination. */
 | 
				
			||||||
 | 
							free_Argv = 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							/* Use the known-good 32-bit argv[] (which needs the
 | 
				
			||||||
 | 
							 * type cast to satisfy the compiler), or the trusted or
 | 
				
			||||||
 | 
							 * tested-good 64-bit argv[] as-is. */
 | 
				
			||||||
 | 
							Argv = (char **)_Argv;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif /* defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	arg.data=NULL;
 | 
						arg.data=NULL;
 | 
				
			||||||
	arg.count=0;
 | 
						arg.count=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -330,7 +383,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;
 | 
				
			||||||
@@ -372,6 +426,13 @@ end:
 | 
				
			|||||||
		BIO_free(bio_err);
 | 
							BIO_free(bio_err);
 | 
				
			||||||
		bio_err=NULL;
 | 
							bio_err=NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
 | 
				
			||||||
 | 
						/* Free any duplicate Argv[] storage. */
 | 
				
			||||||
 | 
						if (free_Argv)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							OPENSSL_free(Argv);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,7 +145,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
 | 
				
			||||||
@@ -231,7 +231,7 @@ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
subjectKeyIdentifier=hash
 | 
					subjectKeyIdentifier=hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
authorityKeyIdentifier=keyid:always,issuer:always
 | 
					authorityKeyIdentifier=keyid:always,issuer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This is what PKIX recommends but some broken software chokes on critical
 | 
					# This is what PKIX recommends but some broken software chokes on critical
 | 
				
			||||||
# extensions.
 | 
					# extensions.
 | 
				
			||||||
@@ -264,7 +264,7 @@ basicConstraints = CA:true
 | 
				
			|||||||
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
 | 
					# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# issuerAltName=issuer:copy
 | 
					# issuerAltName=issuer:copy
 | 
				
			||||||
authorityKeyIdentifier=keyid:always,issuer:always
 | 
					authorityKeyIdentifier=keyid:always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ proxy_cert_ext ]
 | 
					[ proxy_cert_ext ]
 | 
				
			||||||
# These extensions should be added when creating a proxy certificate
 | 
					# These extensions should be added when creating a proxy certificate
 | 
				
			||||||
@@ -297,7 +297,7 @@ nsComment			= "OpenSSL Generated Certificate"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# PKIX recommendations harmless if included in all certificates.
 | 
					# PKIX recommendations harmless if included in all certificates.
 | 
				
			||||||
subjectKeyIdentifier=hash
 | 
					subjectKeyIdentifier=hash
 | 
				
			||||||
authorityKeyIdentifier=keyid,issuer:always
 | 
					authorityKeyIdentifier=keyid,issuer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This stuff is for subjectAltName and issuerAltname.
 | 
					# This stuff is for subjectAltName and issuerAltname.
 | 
				
			||||||
# Import the email address.
 | 
					# Import the email address.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,7 +117,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
    int ret = 1;
 | 
					    int ret = 1;
 | 
				
			||||||
    int macver = 1;
 | 
					    int macver = 1;
 | 
				
			||||||
    int noprompt = 0;
 | 
					    int noprompt = 0;
 | 
				
			||||||
    STACK_OF(STRING) *canames = NULL;
 | 
					    STACK_OF(OPENSSL_STRING) *canames = NULL;
 | 
				
			||||||
    char *cpass = NULL, *mpass = NULL;
 | 
					    char *cpass = NULL, *mpass = NULL;
 | 
				
			||||||
    char *passargin = NULL, *passargout = NULL, *passarg = NULL;
 | 
					    char *passargin = NULL, *passargout = NULL, *passarg = NULL;
 | 
				
			||||||
    char *passin = NULL, *passout = NULL;
 | 
					    char *passin = NULL, *passout = NULL;
 | 
				
			||||||
@@ -222,8 +222,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		} else if (!strcmp (*args, "-caname")) {
 | 
							} else if (!strcmp (*args, "-caname")) {
 | 
				
			||||||
		    if (args[1]) {
 | 
							    if (args[1]) {
 | 
				
			||||||
			args++;	
 | 
								args++;	
 | 
				
			||||||
			if (!canames) canames = sk_STRING_new_null();
 | 
								if (!canames) canames = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(canames, *args);
 | 
								sk_OPENSSL_STRING_push(canames, *args);
 | 
				
			||||||
		    } else badarg = 1;
 | 
							    } else badarg = 1;
 | 
				
			||||||
		} else if (!strcmp (*args, "-in")) {
 | 
							} else if (!strcmp (*args, "-in")) {
 | 
				
			||||||
		    if (args[1]) {
 | 
							    if (args[1]) {
 | 
				
			||||||
@@ -549,9 +549,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Add any CA names */
 | 
						/* Add any CA names */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < sk_STRING_num(canames); i++)
 | 
						for (i = 0; i < sk_OPENSSL_STRING_num(canames); i++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		catmp = (unsigned char *)sk_STRING_value(canames, i);
 | 
							catmp = (unsigned char *)sk_OPENSSL_STRING_value(canames, i);
 | 
				
			||||||
		X509_alias_set1(sk_X509_value(certs, i), catmp, -1);
 | 
							X509_alias_set1(sk_X509_value(certs, i), catmp, -1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -647,7 +647,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");
 | 
				
			||||||
@@ -687,7 +687,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
    BIO_free(in);
 | 
					    BIO_free(in);
 | 
				
			||||||
    BIO_free_all(out);
 | 
					    BIO_free_all(out);
 | 
				
			||||||
    if (canames) sk_STRING_free(canames);
 | 
					    if (canames) sk_OPENSSL_STRING_free(canames);
 | 
				
			||||||
    if(passin) OPENSSL_free(passin);
 | 
					    if(passin) OPENSSL_free(passin);
 | 
				
			||||||
    if(passout) OPENSSL_free(passout);
 | 
					    if(passout) OPENSSL_free(passout);
 | 
				
			||||||
    apps_shutdown();
 | 
					    apps_shutdown();
 | 
				
			||||||
@@ -923,7 +923,7 @@ int print_attribs (BIO *out, STACK_OF(X509_ATTRIBUTE) *attrlst,const char *name)
 | 
				
			|||||||
			av = sk_ASN1_TYPE_value(attr->value.set, 0);
 | 
								av = sk_ASN1_TYPE_value(attr->value.set, 0);
 | 
				
			||||||
			switch(av->type) {
 | 
								switch(av->type) {
 | 
				
			||||||
				case V_ASN1_BMPSTRING:
 | 
									case V_ASN1_BMPSTRING:
 | 
				
			||||||
        			value = uni2asc(av->value.bmpstring->data,
 | 
					        			value = OPENSSL_uni2asc(av->value.bmpstring->data,
 | 
				
			||||||
                                	       av->value.bmpstring->length);
 | 
					                                	       av->value.bmpstring->length);
 | 
				
			||||||
				BIO_printf(out, "%s\n", value);
 | 
									BIO_printf(out, "%s\n", value);
 | 
				
			||||||
				OPENSSL_free(value);
 | 
									OPENSSL_free(value);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
@@ -182,7 +179,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());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -275,7 +275,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	if (topk8)
 | 
						if (topk8)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_free(in); /* Not needed in this section */
 | 
					 | 
				
			||||||
		pkey = load_key(bio_err, infile, informat, 1,
 | 
							pkey = load_key(bio_err, infile, informat, 1,
 | 
				
			||||||
			passin, e, "key");
 | 
								passin, e, "key");
 | 
				
			||||||
		if (!pkey)
 | 
							if (!pkey)
 | 
				
			||||||
@@ -404,6 +403,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			BIO_printf(bio_err, "DSA public key include in PrivateKey\n");
 | 
								BIO_printf(bio_err, "DSA public key include in PrivateKey\n");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case PKCS8_NEG_PRIVKEY:
 | 
				
			||||||
 | 
								BIO_printf(bio_err, "DSA private key value is negative\n");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
			BIO_printf(bio_err, "Unknown broken type\n");
 | 
								BIO_printf(bio_err, "Unknown broken type\n");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,7 +74,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	EVP_PKEY *pkey=NULL;
 | 
						EVP_PKEY *pkey=NULL;
 | 
				
			||||||
	int badarg = 0;
 | 
						int badarg = 0;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	ENGINE *e = NULL;
 | 
					 | 
				
			||||||
	char *engine=NULL;
 | 
						char *engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	int ret = 1;
 | 
						int ret = 1;
 | 
				
			||||||
@@ -141,7 +140,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
        e = setup_engine(bio_err, engine, 0);
 | 
					        setup_engine(bio_err, engine, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (infile)
 | 
						if (infile)
 | 
				
			||||||
@@ -179,7 +178,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	pkey = PEM_read_bio_Parameters(in, NULL);
 | 
						pkey = PEM_read_bio_Parameters(in, NULL);
 | 
				
			||||||
	if (!pkey)
 | 
						if (!pkey)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err, "Error reading paramters\n");
 | 
							BIO_printf(bio_err, "Error reading parameters\n");
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -119,17 +119,17 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if (!strcmp(*argv,"-in"))
 | 
							if (!strcmp(*argv,"-in"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
                        infile= *(++argv);
 | 
					                        else infile= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (!strcmp(*argv,"-out"))
 | 
							else if (!strcmp(*argv,"-out"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
			outfile= *(++argv);
 | 
								else outfile= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (!strcmp(*argv,"-sigfile"))
 | 
							else if (!strcmp(*argv,"-sigfile"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
			sigfile= *(++argv);
 | 
								else sigfile= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if(!strcmp(*argv, "-inkey"))
 | 
							else if(!strcmp(*argv, "-inkey"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -159,17 +159,17 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (!strcmp(*argv,"-passin"))
 | 
							else if (!strcmp(*argv,"-passin"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
			passargin= *(++argv);
 | 
								else passargin= *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-peerform") == 0)
 | 
							else if (strcmp(*argv,"-peerform") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
			peerform=str2fmt(*(++argv));
 | 
								else peerform=str2fmt(*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-keyform") == 0)
 | 
							else if (strcmp(*argv,"-keyform") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) badarg = 1;
 | 
								if (--argc < 1) badarg = 1;
 | 
				
			||||||
			keyform=str2fmt(*(++argv));
 | 
								else keyform=str2fmt(*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
		else if(!strcmp(*argv, "-engine"))
 | 
							else if(!strcmp(*argv, "-engine"))
 | 
				
			||||||
@@ -390,7 +390,7 @@ static void usage()
 | 
				
			|||||||
	BIO_printf(bio_err, "Usage: pkeyutl [options]\n");
 | 
						BIO_printf(bio_err, "Usage: pkeyutl [options]\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-in file        input file\n");
 | 
						BIO_printf(bio_err, "-in file        input file\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-out file       output file\n");
 | 
						BIO_printf(bio_err, "-out file       output file\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-signature file signature file (verify operation only)\n");
 | 
						BIO_printf(bio_err, "-sigfile file signature file (verify operation only)\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-inkey file     input key\n");
 | 
						BIO_printf(bio_err, "-inkey file     input key\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-keyform arg    private key format - default PEM\n");
 | 
						BIO_printf(bio_err, "-keyform arg    private key format - default PEM\n");
 | 
				
			||||||
	BIO_printf(bio_err, "-pubin          input is a public key\n");
 | 
						BIO_printf(bio_err, "-pubin          input is a public key\n");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -142,7 +142,9 @@ FUNCTION functions[] = {
 | 
				
			|||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"engine",engine_main},
 | 
						{FUNC_TYPE_GENERAL,"engine",engine_main},
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_OCSP
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
 | 
						{FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"prime",prime_main},
 | 
						{FUNC_TYPE_GENERAL,"prime",prime_main},
 | 
				
			||||||
	{FUNC_TYPE_GENERAL,"ts",ts_main},
 | 
						{FUNC_TYPE_GENERAL,"ts",ts_main},
 | 
				
			||||||
#ifndef OPENSSL_NO_MD2
 | 
					#ifndef OPENSSL_NO_MD2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,6 +22,7 @@ typedef struct {
 | 
				
			|||||||
	const char *name;
 | 
						const char *name;
 | 
				
			||||||
	int (*func)(int argc,char *argv[]);
 | 
						int (*func)(int argc,char *argv[]);
 | 
				
			||||||
	} FUNCTION;
 | 
						} FUNCTION;
 | 
				
			||||||
 | 
					DECLARE_LHASH_OF(FUNCTION);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FUNCTION functions[] = {
 | 
					FUNCTION functions[] = {
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
@@ -48,6 +49,8 @@ foreach (@ARGV)
 | 
				
			|||||||
		{ 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$/))
 | 
						elsif ( ($_ =~ /^cms$/))
 | 
				
			||||||
		{ print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n"; }
 | 
							{ print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n"; }
 | 
				
			||||||
 | 
						elsif ( ($_ =~ /^ocsp$/))
 | 
				
			||||||
 | 
							{ print "#ifndef OPENSSL_NO_OCSP\n${str}#endif\n"; }
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{ print $str; }
 | 
							{ print $str; }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,9 +77,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 i, r, ret = 1;
 | 
						int i, r, ret = 1;
 | 
				
			||||||
	int badopt;
 | 
						int badopt;
 | 
				
			||||||
	char *outfile = NULL;
 | 
						char *outfile = NULL;
 | 
				
			||||||
@@ -178,7 +175,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#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));
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								apps/req.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								apps/req.c
									
									
									
									
									
								
							@@ -165,7 +165,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	EVP_PKEY_CTX *genctx = NULL;
 | 
						EVP_PKEY_CTX *genctx = NULL;
 | 
				
			||||||
	const char *keyalg = NULL;
 | 
						const char *keyalg = NULL;
 | 
				
			||||||
	char *keyalgstr = NULL;
 | 
						char *keyalgstr = NULL;
 | 
				
			||||||
	STACK_OF(STRING) *pkeyopts = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *pkeyopts = NULL;
 | 
				
			||||||
	EVP_PKEY *pkey=NULL;
 | 
						EVP_PKEY *pkey=NULL;
 | 
				
			||||||
	int i=0,badops=0,newreq=0,verbose=0,pkey_type=-1;
 | 
						int i=0,badops=0,newreq=0,verbose=0,pkey_type=-1;
 | 
				
			||||||
	long newkey = -1;
 | 
						long newkey = -1;
 | 
				
			||||||
@@ -306,8 +306,8 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1)
 | 
								if (--argc < 1)
 | 
				
			||||||
				goto bad;
 | 
									goto bad;
 | 
				
			||||||
			if (!pkeyopts)
 | 
								if (!pkeyopts)
 | 
				
			||||||
				pkeyopts = sk_STRING_new_null();
 | 
									pkeyopts = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			if (!pkeyopts || !sk_STRING_push(pkeyopts, *(++argv)))
 | 
								if (!pkeyopts || !sk_OPENSSL_STRING_push(pkeyopts, *(++argv)))
 | 
				
			||||||
				goto bad;
 | 
									goto bad;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-batch") == 0)
 | 
							else if (strcmp(*argv,"-batch") == 0)
 | 
				
			||||||
@@ -365,11 +365,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			serial = s2i_ASN1_INTEGER(NULL, *(++argv));
 | 
								serial = s2i_ASN1_INTEGER(NULL, *(++argv));
 | 
				
			||||||
			if (!serial) goto bad;
 | 
								if (!serial) goto bad;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			/* ok */
 | 
					 | 
				
			||||||
			digest=md_alg;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		else if (strcmp(*argv,"-extensions") == 0)
 | 
							else if (strcmp(*argv,"-extensions") == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
@@ -380,6 +375,11 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			req_exts = *(++argv);
 | 
								req_exts = *(++argv);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								/* ok */
 | 
				
			||||||
 | 
								digest=md_alg;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
								BIO_printf(bio_err,"unknown option %s\n",*argv);
 | 
				
			||||||
@@ -667,9 +667,9 @@ bad:
 | 
				
			|||||||
		if (pkeyopts)
 | 
							if (pkeyopts)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			char *genopt;
 | 
								char *genopt;
 | 
				
			||||||
			for (i = 0; i < sk_STRING_num(pkeyopts); i++)
 | 
								for (i = 0; i < sk_OPENSSL_STRING_num(pkeyopts); i++)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				genopt = sk_STRING_value(pkeyopts, i);
 | 
									genopt = sk_OPENSSL_STRING_value(pkeyopts, i);
 | 
				
			||||||
				if (pkey_ctrl_string(genctx, genopt) <= 0)
 | 
									if (pkey_ctrl_string(genctx, genopt) <= 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					BIO_printf(bio_err,
 | 
										BIO_printf(bio_err,
 | 
				
			||||||
@@ -1083,7 +1083,7 @@ end:
 | 
				
			|||||||
	if (genctx)
 | 
						if (genctx)
 | 
				
			||||||
		EVP_PKEY_CTX_free(genctx);
 | 
							EVP_PKEY_CTX_free(genctx);
 | 
				
			||||||
	if (pkeyopts)
 | 
						if (pkeyopts)
 | 
				
			||||||
		sk_STRING_free(pkeyopts);
 | 
							sk_OPENSSL_STRING_free(pkeyopts);
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	if (gen_eng)
 | 
						if (gen_eng)
 | 
				
			||||||
		ENGINE_free(gen_eng);
 | 
							ENGINE_free(gen_eng);
 | 
				
			||||||
@@ -1336,11 +1336,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))
 | 
				
			||||||
@@ -1441,7 +1447,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
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -1499,7 +1506,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
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -1715,7 +1723,7 @@ static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
 | 
				
			|||||||
		ERR_print_errors(err);
 | 
							ERR_print_errors(err);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
	if ((*pkey_type == EVP_PKEY_RSA) && (keylen != -1))
 | 
						if ((*pkey_type == EVP_PKEY_RSA) && (keylen != -1))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (EVP_PKEY_CTX_set_rsa_keygen_bits(gctx, keylen) <= 0)
 | 
							if (EVP_PKEY_CTX_set_rsa_keygen_bits(gctx, keylen) <= 0)
 | 
				
			||||||
@@ -1726,6 +1734,7 @@ static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
 | 
				
			|||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return gctx;
 | 
						return gctx;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -409,6 +409,7 @@ bad:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		else i=PEM_write_bio_RSAPrivateKey(out,rsa,
 | 
							else i=PEM_write_bio_RSAPrivateKey(out,rsa,
 | 
				
			||||||
						enc,NULL,0,NULL,passout);
 | 
											enc,NULL,0,NULL,passout);
 | 
				
			||||||
 | 
					#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
 | 
				
			||||||
	} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
 | 
						} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
 | 
				
			||||||
		EVP_PKEY *pk;
 | 
							EVP_PKEY *pk;
 | 
				
			||||||
		pk = EVP_PKEY_new();
 | 
							pk = EVP_PKEY_new();
 | 
				
			||||||
@@ -420,11 +421,12 @@ bad:
 | 
				
			|||||||
		else
 | 
							else
 | 
				
			||||||
			i = i2b_PrivateKey_bio(out, pk);
 | 
								i = i2b_PrivateKey_bio(out, pk);
 | 
				
			||||||
		EVP_PKEY_free(pk);
 | 
							EVP_PKEY_free(pk);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	} else	{
 | 
						} else	{
 | 
				
			||||||
		BIO_printf(bio_err,"bad output format specified for outfile\n");
 | 
							BIO_printf(bio_err,"bad output format specified for outfile\n");
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (!i)
 | 
						if (i <= 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"unable to write key\n");
 | 
							BIO_printf(bio_err,"unable to write key\n");
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -342,4 +342,10 @@ static void usage()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else /* !OPENSSL_NO_RSA */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if PEDANTIC
 | 
				
			||||||
 | 
					static void *dummy=&dummy;
 | 
				
			||||||
 | 
					# endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -171,3 +171,6 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
 | 
				
			|||||||
					unsigned char *data, int len,
 | 
										unsigned char *data, int len,
 | 
				
			||||||
					void *arg);
 | 
										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);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										222
									
								
								apps/s_cb.c
									
									
									
									
									
								
							
							
						
						
									
										222
									
								
								apps/s_cb.c
									
									
									
									
									
								
							@@ -117,17 +117,21 @@
 | 
				
			|||||||
#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;
 | 
				
			||||||
int verify_return_error=0;
 | 
					int verify_return_error=0;
 | 
				
			||||||
 | 
					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)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	char buf[256];
 | 
					 | 
				
			||||||
	X509 *err_cert;
 | 
						X509 *err_cert;
 | 
				
			||||||
	int err,depth;
 | 
						int err,depth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -135,8 +139,15 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
 | 
				
			|||||||
	err=	X509_STORE_CTX_get_error(ctx);
 | 
						err=	X509_STORE_CTX_get_error(ctx);
 | 
				
			||||||
	depth=	X509_STORE_CTX_get_error_depth(ctx);
 | 
						depth=	X509_STORE_CTX_get_error_depth(ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	X509_NAME_oneline(X509_get_subject_name(err_cert),buf,sizeof buf);
 | 
						BIO_printf(bio_err,"depth=%d ",depth);
 | 
				
			||||||
	BIO_printf(bio_err,"depth=%d %s\n",depth,buf);
 | 
						if (err_cert)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							X509_NAME_print_ex(bio_err, X509_get_subject_name(err_cert),
 | 
				
			||||||
 | 
										0, XN_FLAG_ONELINE);
 | 
				
			||||||
 | 
							BIO_puts(bio_err, "\n");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							BIO_puts(bio_err, "<no cert>\n");
 | 
				
			||||||
	if (!ok)
 | 
						if (!ok)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BIO_printf(bio_err,"verify error:num=%d:%s\n",err,
 | 
							BIO_printf(bio_err,"verify error:num=%d:%s\n",err,
 | 
				
			||||||
@@ -153,25 +164,33 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
 | 
				
			|||||||
			verify_error=X509_V_ERR_CERT_CHAIN_TOO_LONG;
 | 
								verify_error=X509_V_ERR_CERT_CHAIN_TOO_LONG;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	switch (ctx->error)
 | 
						switch (err)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
	case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
 | 
						case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
 | 
				
			||||||
		X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),buf,sizeof buf);
 | 
							BIO_puts(bio_err,"issuer= ");
 | 
				
			||||||
		BIO_printf(bio_err,"issuer= %s\n",buf);
 | 
							X509_NAME_print_ex(bio_err, X509_get_issuer_name(err_cert),
 | 
				
			||||||
 | 
										0, XN_FLAG_ONELINE);
 | 
				
			||||||
 | 
							BIO_puts(bio_err, "\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case X509_V_ERR_CERT_NOT_YET_VALID:
 | 
						case X509_V_ERR_CERT_NOT_YET_VALID:
 | 
				
			||||||
	case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
 | 
						case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
 | 
				
			||||||
		BIO_printf(bio_err,"notBefore=");
 | 
							BIO_printf(bio_err,"notBefore=");
 | 
				
			||||||
		ASN1_TIME_print(bio_err,X509_get_notBefore(ctx->current_cert));
 | 
							ASN1_TIME_print(bio_err,X509_get_notBefore(err_cert));
 | 
				
			||||||
		BIO_printf(bio_err,"\n");
 | 
							BIO_printf(bio_err,"\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case X509_V_ERR_CERT_HAS_EXPIRED:
 | 
						case X509_V_ERR_CERT_HAS_EXPIRED:
 | 
				
			||||||
	case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
 | 
						case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
 | 
				
			||||||
		BIO_printf(bio_err,"notAfter=");
 | 
							BIO_printf(bio_err,"notAfter=");
 | 
				
			||||||
		ASN1_TIME_print(bio_err,X509_get_notAfter(ctx->current_cert));
 | 
							ASN1_TIME_print(bio_err,X509_get_notAfter(err_cert));
 | 
				
			||||||
		BIO_printf(bio_err,"\n");
 | 
							BIO_printf(bio_err,"\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case X509_V_ERR_NO_EXPLICIT_POLICY:
 | 
				
			||||||
 | 
							policies_print(bio_err, ctx);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						if (err == X509_V_OK && ok == 2)
 | 
				
			||||||
 | 
							policies_print(bio_err, ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BIO_printf(bio_err,"verify return:%d\n",ok);
 | 
						BIO_printf(bio_err,"verify return:%d\n",ok);
 | 
				
			||||||
	return(ok);
 | 
						return(ok);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -338,6 +357,12 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
	case TLS1_VERSION:
 | 
						case TLS1_VERSION:
 | 
				
			||||||
		str_version = "TLS 1.0 ";
 | 
							str_version = "TLS 1.0 ";
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case DTLS1_VERSION:
 | 
				
			||||||
 | 
							str_version = "DTLS 1.0 ";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case DTLS1_BAD_VER:
 | 
				
			||||||
 | 
							str_version = "DTLS 1.0 (bad) ";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		str_version = "???";
 | 
							str_version = "???";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -403,7 +428,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)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -542,6 +570,9 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
 | 
				
			|||||||
				case 2:
 | 
									case 2:
 | 
				
			||||||
					str_details1 = ", ServerHello";
 | 
										str_details1 = ", ServerHello";
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
 | 
									case 3:
 | 
				
			||||||
 | 
										str_details1 = ", HelloVerifyRequest";
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
				case 11:
 | 
									case 11:
 | 
				
			||||||
					str_details1 = ", Certificate";
 | 
										str_details1 = ", Certificate";
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
@@ -638,6 +669,10 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
 | 
				
			|||||||
		extname = "server ticket";
 | 
							extname = "server ticket";
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case TLSEXT_TYPE_renegotiate:
 | 
				
			||||||
 | 
							extname = "renegotiate";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef TLSEXT_TYPE_opaque_prf_input
 | 
					#ifdef TLSEXT_TYPE_opaque_prf_input
 | 
				
			||||||
		case TLSEXT_TYPE_opaque_prf_input:
 | 
							case TLSEXT_TYPE_opaque_prf_input:
 | 
				
			||||||
		extname = "opaque PRF input";
 | 
							extname = "opaque PRF input";
 | 
				
			||||||
@@ -656,3 +691,172 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
 | 
				
			|||||||
	BIO_dump(bio, (char *)data, len);
 | 
						BIO_dump(bio, (char *)data, len);
 | 
				
			||||||
	(void)BIO_flush(bio);
 | 
						(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;
 | 
				
			||||||
 | 
						union {
 | 
				
			||||||
 | 
							struct sockaddr sa;
 | 
				
			||||||
 | 
							struct sockaddr_in s4;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
							struct sockaddr_in6 s6;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						} 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 = 0;
 | 
				
			||||||
 | 
						switch (peer.sa.sa_family)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							length += sizeof(struct in_addr);
 | 
				
			||||||
 | 
							length += sizeof(peer.s4.sin_port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							length += sizeof(struct in6_addr);
 | 
				
			||||||
 | 
							length += sizeof(peer.s6.sin6_port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							OPENSSL_assert(0);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						buffer = OPENSSL_malloc(length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (buffer == NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (peer.sa.sa_family)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							memcpy(buffer,
 | 
				
			||||||
 | 
							       &peer.s4.sin_port,
 | 
				
			||||||
 | 
							       sizeof(peer.s4.sin_port));
 | 
				
			||||||
 | 
							memcpy(buffer + sizeof(peer.s4.sin_port),
 | 
				
			||||||
 | 
							       &peer.s4.sin_addr,
 | 
				
			||||||
 | 
							       sizeof(struct in_addr));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							memcpy(buffer,
 | 
				
			||||||
 | 
							       &peer.s6.sin6_port,
 | 
				
			||||||
 | 
							       sizeof(peer.s6.sin6_port));
 | 
				
			||||||
 | 
							memcpy(buffer + sizeof(peer.s6.sin6_port),
 | 
				
			||||||
 | 
							       &peer.s6.sin6_addr,
 | 
				
			||||||
 | 
							       sizeof(struct in6_addr));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							OPENSSL_assert(0);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* 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;
 | 
				
			||||||
 | 
						union {
 | 
				
			||||||
 | 
							struct sockaddr sa;
 | 
				
			||||||
 | 
							struct sockaddr_in s4;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
							struct sockaddr_in6 s6;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						} 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 = 0;
 | 
				
			||||||
 | 
						switch (peer.sa.sa_family)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							length += sizeof(struct in_addr);
 | 
				
			||||||
 | 
							length += sizeof(peer.s4.sin_port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							length += sizeof(struct in6_addr);
 | 
				
			||||||
 | 
							length += sizeof(peer.s6.sin6_port);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							OPENSSL_assert(0);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						buffer = OPENSSL_malloc(length);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (buffer == NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							BIO_printf(bio_err,"out of memory\n");
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (peer.sa.sa_family)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
						case AF_INET:
 | 
				
			||||||
 | 
							memcpy(buffer,
 | 
				
			||||||
 | 
							       &peer.s4.sin_port,
 | 
				
			||||||
 | 
							       sizeof(peer.s4.sin_port));
 | 
				
			||||||
 | 
							memcpy(buffer + sizeof(peer.s4.sin_port),
 | 
				
			||||||
 | 
							       &peer.s4.sin_addr,
 | 
				
			||||||
 | 
							       sizeof(struct in_addr));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#if OPENSSL_USE_IPV6
 | 
				
			||||||
 | 
						case AF_INET6:
 | 
				
			||||||
 | 
							memcpy(buffer,
 | 
				
			||||||
 | 
							       &peer.s6.sin6_port,
 | 
				
			||||||
 | 
							       sizeof(peer.s6.sin6_port));
 | 
				
			||||||
 | 
							memcpy(buffer + sizeof(peer.s6.sin6_port),
 | 
				
			||||||
 | 
							       &peer.s6.sin6_addr,
 | 
				
			||||||
 | 
							       sizeof(struct in6_addr));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							OPENSSL_assert(0);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* 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;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -320,7 +320,7 @@ static void sc_usage(void)
 | 
				
			|||||||
	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");
 | 
				
			||||||
@@ -343,6 +343,7 @@ static void sc_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err," -status           - request certificate status from server\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");
 | 
						BIO_printf(bio_err," -no_ticket        - disable use of RFC4507bis session tickets\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_TLSEXT
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
@@ -381,9 +382,8 @@ int MAIN(int, char **);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	int off=0;
 | 
						unsigned int off=0, clr=0;
 | 
				
			||||||
	SSL *con=NULL;
 | 
						SSL *con=NULL;
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
					 | 
				
			||||||
	int s,k,width,state=0;
 | 
						int s,k,width,state=0;
 | 
				
			||||||
	char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL;
 | 
						char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL;
 | 
				
			||||||
	int cbuf_len,cbuf_off;
 | 
						int cbuf_len,cbuf_off;
 | 
				
			||||||
@@ -404,12 +404,15 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	SSL_CTX *ctx=NULL;
 | 
						SSL_CTX *ctx=NULL;
 | 
				
			||||||
	int ret=1,in_init=1,i,nbio_test=0;
 | 
						int ret=1,in_init=1,i,nbio_test=0;
 | 
				
			||||||
	int starttls_proto = PROTO_OFF;
 | 
						int starttls_proto = PROTO_OFF;
 | 
				
			||||||
	int prexit = 0, vflags = 0;
 | 
						int prexit = 0;
 | 
				
			||||||
 | 
						X509_VERIFY_PARAM *vpm = NULL;
 | 
				
			||||||
 | 
						int badarg = 0;
 | 
				
			||||||
	const SSL_METHOD *meth=NULL;
 | 
						const SSL_METHOD *meth=NULL;
 | 
				
			||||||
	int socket_type=SOCK_STREAM;
 | 
						int socket_type=SOCK_STREAM;
 | 
				
			||||||
	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;
 | 
				
			||||||
	char *ssl_client_engine_id=NULL;
 | 
						char *ssl_client_engine_id=NULL;
 | 
				
			||||||
@@ -521,10 +524,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (--argc < 1) goto bad;
 | 
								if (--argc < 1) goto bad;
 | 
				
			||||||
			cert_format = str2fmt(*(++argv));
 | 
								cert_format = str2fmt(*(++argv));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if	(strcmp(*argv,"-crl_check") == 0)
 | 
							else if (args_verify(&argv, &argc, &badarg, bio_err, &vpm))
 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK;
 | 
								{
 | 
				
			||||||
		else if	(strcmp(*argv,"-crl_check_all") == 0)
 | 
								if (badarg)
 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
 | 
									goto bad;
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-verify_return_error") == 0)
 | 
							else if (strcmp(*argv,"-verify_return_error") == 0)
 | 
				
			||||||
			verify_return_error = 1;
 | 
								verify_return_error = 1;
 | 
				
			||||||
		else if	(strcmp(*argv,"-prexit") == 0)
 | 
							else if	(strcmp(*argv,"-prexit") == 0)
 | 
				
			||||||
@@ -654,6 +659,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
#endif
 | 
					#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;
 | 
				
			||||||
@@ -831,6 +842,9 @@ bad:
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (vpm)
 | 
				
			||||||
 | 
							SSL_CTX_set1_param(ctx, vpm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	if (ssl_client_engine)
 | 
						if (ssl_client_engine)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -861,6 +875,9 @@ bad:
 | 
				
			|||||||
		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.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@@ -890,8 +907,6 @@ bad:
 | 
				
			|||||||
		/* goto end; */
 | 
							/* goto end; */
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store = SSL_CTX_get_cert_store(ctx);
 | 
					 | 
				
			||||||
	X509_STORE_set_flags(store, vflags);
 | 
					 | 
				
			||||||
#ifndef OPENSSL_NO_TLSEXT
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	if (servername != NULL)
 | 
						if (servername != NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -975,7 +990,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)
 | 
				
			||||||
@@ -999,10 +1013,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 (socket_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, socket_mtu);
 | 
								SSL_set_mtu(con, socket_mtu - 28);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			/* want to do MTU discovery */
 | 
								/* want to do MTU discovery */
 | 
				
			||||||
@@ -1192,6 +1206,12 @@ SSL_set_tlsext_status_ids(con, ids);
 | 
				
			|||||||
		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;
 | 
				
			||||||
@@ -1296,7 +1316,7 @@ SSL_set_tlsext_status_ids(con, ids);
 | 
				
			|||||||
					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) {
 | 
				
			||||||
@@ -1306,7 +1326,7 @@ SSL_set_tlsext_status_ids(con, ids);
 | 
				
			|||||||
					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);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#elif defined(OPENSSL_SYS_BEOS_R5)
 | 
					#elif defined(OPENSSL_SYS_BEOS_R5)
 | 
				
			||||||
			/* Under BeOS-R5 the situation is similar to DOS */
 | 
								/* Under BeOS-R5 the situation is similar to DOS */
 | 
				
			||||||
@@ -1324,12 +1344,12 @@ SSL_set_tlsext_status_ids(con, ids);
 | 
				
			|||||||
					if (!i && (stdin_set != 1 || !read_tty))
 | 
										if (!i && (stdin_set != 1 || !read_tty))
 | 
				
			||||||
						continue;
 | 
											continue;
 | 
				
			||||||
				} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
									} else 	i=select(width,(void *)&readfds,(void *)&writefds,
 | 
				
			||||||
					 NULL,NULL);
 | 
										 NULL,timeoutp);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			(void)fcntl(fileno(stdin), F_SETFL, 0);
 | 
								(void)fcntl(fileno(stdin), F_SETFL, 0);
 | 
				
			||||||
#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)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -1340,6 +1360,11 @@ SSL_set_tlsext_status_ids(con, ids);
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							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]),
 | 
				
			||||||
@@ -1707,6 +1732,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);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -298,7 +298,9 @@ static const char *session_id_prefix=NULL;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static int enable_timeouts = 0;
 | 
					static int enable_timeouts = 0;
 | 
				
			||||||
static long socket_mtu;
 | 
					static long socket_mtu;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_DTLS1
 | 
				
			||||||
static int cert_chain = 0;
 | 
					static int cert_chain = 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_PSK
 | 
					#ifndef OPENSSL_NO_PSK
 | 
				
			||||||
static char *psk_identity="Client_identity";
 | 
					static char *psk_identity="Client_identity";
 | 
				
			||||||
@@ -459,7 +461,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");
 | 
				
			||||||
@@ -489,6 +491,7 @@ static void sv_usage(void)
 | 
				
			|||||||
	BIO_printf(bio_err,"                 not specified (default is %s)\n",TEST_CERT2);
 | 
						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," -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," -no_ticket    - disable use of RFC4507bis session tickets\n");
 | 
				
			||||||
 | 
						BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -671,7 +674,7 @@ static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
 | 
				
			|||||||
			return p->extension_error;
 | 
								return p->extension_error;
 | 
				
			||||||
		if (ctx2)
 | 
							if (ctx2)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(p->biodebug,"Swiching server context.\n");
 | 
								BIO_printf(p->biodebug,"Switching server context.\n");
 | 
				
			||||||
			SSL_set_SSL_CTX(s,ctx2);
 | 
								SSL_set_SSL_CTX(s,ctx2);
 | 
				
			||||||
			}     
 | 
								}     
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -710,7 +713,7 @@ static int cert_status_cb(SSL *s, void *arg)
 | 
				
			|||||||
	int use_ssl;
 | 
						int use_ssl;
 | 
				
			||||||
	unsigned char *rspder = NULL;
 | 
						unsigned char *rspder = NULL;
 | 
				
			||||||
	int rspderlen;
 | 
						int rspderlen;
 | 
				
			||||||
	STACK_OF(STRING) *aia = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *aia = NULL;
 | 
				
			||||||
	X509 *x = NULL;
 | 
						X509 *x = NULL;
 | 
				
			||||||
	X509_STORE_CTX inctx;
 | 
						X509_STORE_CTX inctx;
 | 
				
			||||||
	X509_OBJECT obj;
 | 
						X509_OBJECT obj;
 | 
				
			||||||
@@ -732,7 +735,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
 | 
				
			|||||||
	aia = X509_get1_ocsp(x);
 | 
						aia = X509_get1_ocsp(x);
 | 
				
			||||||
	if (aia)
 | 
						if (aia)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (!OCSP_parse_url(sk_STRING_value(aia, 0),
 | 
							if (!OCSP_parse_url(sk_OPENSSL_STRING_value(aia, 0),
 | 
				
			||||||
			&host, &port, &path, &use_ssl))
 | 
								&host, &port, &path, &use_ssl))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_puts(err, "cert_status: can't parse AIA URL\n");
 | 
								BIO_puts(err, "cert_status: can't parse AIA URL\n");
 | 
				
			||||||
@@ -740,7 +743,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		if (srctx->verbose)
 | 
							if (srctx->verbose)
 | 
				
			||||||
			BIO_printf(err, "cert_status: AIA URL: %s\n",
 | 
								BIO_printf(err, "cert_status: AIA URL: %s\n",
 | 
				
			||||||
					sk_STRING_value(aia, 0));
 | 
										sk_OPENSSL_STRING_value(aia, 0));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -785,7 +788,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
 | 
				
			|||||||
		if (!OCSP_REQUEST_add_ext(req, ext, -1))
 | 
							if (!OCSP_REQUEST_add_ext(req, ext, -1))
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	resp = process_responder(err, req, host, path, port, use_ssl,
 | 
						resp = process_responder(err, req, host, path, port, use_ssl, NULL,
 | 
				
			||||||
					srctx->timeout);
 | 
										srctx->timeout);
 | 
				
			||||||
	if (!resp)
 | 
						if (!resp)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -833,8 +836,8 @@ static char *jpake_secret = NULL;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char *argv[])
 | 
					int MAIN(int argc, char *argv[])
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	X509_STORE *store = NULL;
 | 
						X509_VERIFY_PARAM *vpm = NULL;
 | 
				
			||||||
	int vflags = 0;
 | 
						int badarg = 0;
 | 
				
			||||||
	short port=PORT;
 | 
						short port=PORT;
 | 
				
			||||||
	char *CApath=NULL,*CAfile=NULL;
 | 
						char *CApath=NULL,*CAfile=NULL;
 | 
				
			||||||
	unsigned char *context = NULL;
 | 
						unsigned char *context = NULL;
 | 
				
			||||||
@@ -857,6 +860,7 @@ 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;
 | 
				
			||||||
#ifndef OPENSSL_NO_TLSEXT
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	EVP_PKEY *s_key2 = NULL;
 | 
						EVP_PKEY *s_key2 = NULL;
 | 
				
			||||||
	X509 *s_cert2 = NULL;
 | 
						X509 *s_cert2 = NULL;
 | 
				
			||||||
@@ -999,18 +1003,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,"-crl_check") == 0)
 | 
							else if (strcmp(*argv,"-no_cache") == 0)
 | 
				
			||||||
 | 
								no_cache = 1;
 | 
				
			||||||
 | 
							else if (args_verify(&argv, &argc, &badarg, bio_err, &vpm))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK;
 | 
								if (badarg)
 | 
				
			||||||
			}
 | 
									goto bad;
 | 
				
			||||||
		else if (strcmp(*argv,"-crl_check_all") == 0)
 | 
								continue;
 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else if (strcmp(*argv,"-verify_return_error") == 0)
 | 
							else if (strcmp(*argv,"-verify_return_error") == 0)
 | 
				
			||||||
			verify_return_error = 1;
 | 
								verify_return_error = 1;
 | 
				
			||||||
		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;
 | 
				
			||||||
@@ -1388,8 +1394,10 @@ bad:
 | 
				
			|||||||
	if (socket_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");
 | 
				
			||||||
@@ -1410,8 +1418,8 @@ bad:
 | 
				
			|||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
		/* goto end; */
 | 
							/* goto end; */
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	store = SSL_CTX_get_cert_store(ctx);
 | 
						if (vpm)
 | 
				
			||||||
	X509_STORE_set_flags(store, vflags);
 | 
							SSL_CTX_set1_param(ctx, vpm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_TLSEXT
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	if (s_cert2)
 | 
						if (s_cert2)
 | 
				
			||||||
@@ -1455,15 +1463,18 @@ bad:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
 | 
							if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SSL_CTX_sess_set_cache_size(ctx2,128);
 | 
							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)) ||
 | 
							if ((!SSL_CTX_load_verify_locations(ctx2,CAfile,CApath)) ||
 | 
				
			||||||
			(!SSL_CTX_set_default_verify_paths(ctx2)))
 | 
								(!SSL_CTX_set_default_verify_paths(ctx2)))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ERR_print_errors(bio_err);
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		store = SSL_CTX_get_cert_store(ctx2);
 | 
							if (vpm)
 | 
				
			||||||
		X509_STORE_set_flags(store, vflags);
 | 
								SSL_CTX_set1_param(ctx2, vpm);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif 
 | 
					#endif 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1654,6 +1665,10 @@ bad:
 | 
				
			|||||||
	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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Set DTLS cookie generation and verification callbacks */
 | 
				
			||||||
 | 
						SSL_CTX_set_cookie_generate_cb(ctx, generate_cookie_callback);
 | 
				
			||||||
 | 
						SSL_CTX_set_cookie_verify_cb(ctx, verify_cookie_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_TLSEXT
 | 
					#ifndef OPENSSL_NO_TLSEXT
 | 
				
			||||||
	if (ctx2)
 | 
						if (ctx2)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1750,8 +1765,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) || defined(OPENSSL_SYS_BEOS_R5)
 | 
					#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
 | 
				
			||||||
	struct timeval tv;
 | 
						struct timeval tv;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						struct timeval *timeoutp;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((buf=OPENSSL_malloc(bufsize)) == NULL)
 | 
						if ((buf=OPENSSL_malloc(bufsize)) == NULL)
 | 
				
			||||||
@@ -1808,7 +1826,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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1823,10 +1840,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
			BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
 | 
								BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (socket_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, socket_mtu);
 | 
								SSL_set_mtu(con, socket_mtu - 28);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			/* want to do MTU discovery */
 | 
								/* want to do MTU discovery */
 | 
				
			||||||
@@ -1919,7 +1936,19 @@ static int sv_body(char *hostname, int s, unsigned char *context)
 | 
				
			|||||||
				read_from_terminal = 1;
 | 
									read_from_terminal = 1;
 | 
				
			||||||
			(void)fcntl(fileno(stdin), F_SETFL, 0);
 | 
								(void)fcntl(fileno(stdin), F_SETFL, 0);
 | 
				
			||||||
#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;
 | 
				
			||||||
@@ -2180,6 +2209,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);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2223,11 +2254,10 @@ 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;
 | 
				
			||||||
	SSL *con;
 | 
						SSL *con;
 | 
				
			||||||
	const SSL_CIPHER *c;
 | 
						const SSL_CIPHER *c;
 | 
				
			||||||
	BIO *io,*ssl_bio,*sbio;
 | 
						BIO *io,*ssl_bio,*sbio;
 | 
				
			||||||
	long total_bytes;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buf=OPENSSL_malloc(bufsize);
 | 
						buf=OPENSSL_malloc(bufsize);
 | 
				
			||||||
	if (buf == NULL) return(0);
 | 
						if (buf == NULL) return(0);
 | 
				
			||||||
@@ -2298,7 +2328,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)
 | 
				
			||||||
@@ -2528,7 +2557,6 @@ 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 */
 | 
				
			||||||
			total_bytes=0;
 | 
					 | 
				
			||||||
			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
 | 
				
			||||||
@@ -321,7 +327,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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -360,7 +366,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:
 | 
				
			||||||
@@ -378,7 +383,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;
 | 
				
			||||||
@@ -401,6 +406,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
 | 
				
			||||||
@@ -455,7 +461,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");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								apps/smime.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								apps/smime.c
									
									
									
									
									
								
							@@ -93,7 +93,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	const char *inmode = "r", *outmode = "w";
 | 
						const char *inmode = "r", *outmode = "w";
 | 
				
			||||||
	char *infile = NULL, *outfile = NULL;
 | 
						char *infile = NULL, *outfile = NULL;
 | 
				
			||||||
	char *signerfile = NULL, *recipfile = NULL;
 | 
						char *signerfile = NULL, *recipfile = NULL;
 | 
				
			||||||
	STACK_OF(STRING) *sksigners = NULL, *skkeys = NULL;
 | 
						STACK_OF(OPENSSL_STRING) *sksigners = NULL, *skkeys = NULL;
 | 
				
			||||||
	char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
 | 
						char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
 | 
				
			||||||
	const EVP_CIPHER *cipher = NULL;
 | 
						const EVP_CIPHER *cipher = NULL;
 | 
				
			||||||
	PKCS7 *p7 = NULL;
 | 
						PKCS7 *p7 = NULL;
 | 
				
			||||||
@@ -260,13 +260,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			if (signerfile)
 | 
								if (signerfile)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if (!sksigners)
 | 
									if (!sksigners)
 | 
				
			||||||
					sksigners = sk_STRING_new_null();
 | 
										sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(sksigners, signerfile);
 | 
									sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
				if (!keyfile)
 | 
									if (!keyfile)
 | 
				
			||||||
					keyfile = signerfile;
 | 
										keyfile = signerfile;
 | 
				
			||||||
				if (!skkeys)
 | 
									if (!skkeys)
 | 
				
			||||||
					skkeys = sk_STRING_new_null();
 | 
										skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(skkeys, keyfile);
 | 
									sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
				keyfile = NULL;
 | 
									keyfile = NULL;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			signerfile = *++args;
 | 
								signerfile = *++args;
 | 
				
			||||||
@@ -302,12 +302,12 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
					goto argerr;
 | 
										goto argerr;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				if (!sksigners)
 | 
									if (!sksigners)
 | 
				
			||||||
					sksigners = sk_STRING_new_null();
 | 
										sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(sksigners, signerfile);
 | 
									sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
				signerfile = NULL;
 | 
									signerfile = NULL;
 | 
				
			||||||
				if (!skkeys)
 | 
									if (!skkeys)
 | 
				
			||||||
					skkeys = sk_STRING_new_null();
 | 
										skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
				sk_STRING_push(skkeys, keyfile);
 | 
									sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			keyfile = *++args;
 | 
								keyfile = *++args;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -389,13 +389,13 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		if (signerfile)
 | 
							if (signerfile)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (!sksigners)
 | 
								if (!sksigners)
 | 
				
			||||||
				sksigners = sk_STRING_new_null();
 | 
									sksigners = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			sk_STRING_push(sksigners, signerfile);
 | 
								sk_OPENSSL_STRING_push(sksigners, signerfile);
 | 
				
			||||||
			if (!skkeys)
 | 
								if (!skkeys)
 | 
				
			||||||
				skkeys = sk_STRING_new_null();
 | 
									skkeys = sk_OPENSSL_STRING_new_null();
 | 
				
			||||||
			if (!keyfile)
 | 
								if (!keyfile)
 | 
				
			||||||
				keyfile = signerfile;
 | 
									keyfile = signerfile;
 | 
				
			||||||
			sk_STRING_push(skkeys, keyfile);
 | 
								sk_OPENSSL_STRING_push(skkeys, keyfile);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (!sksigners)
 | 
							if (!sksigners)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -671,7 +671,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
		if (!(store = setup_verify(bio_err, CAfile, CApath)))
 | 
							if (!(store = setup_verify(bio_err, CAfile, CApath)))
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		X509_STORE_set_verify_cb_func(store, smime_cb);
 | 
							X509_STORE_set_verify_cb(store, smime_cb);
 | 
				
			||||||
		if (vpm)
 | 
							if (vpm)
 | 
				
			||||||
			X509_STORE_set1_param(store, vpm);
 | 
								X509_STORE_set1_param(store, vpm);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -707,10 +707,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			flags |= PKCS7_REUSE_DIGEST;
 | 
								flags |= PKCS7_REUSE_DIGEST;
 | 
				
			||||||
		for (i = 0; i < sk_STRING_num(sksigners); i++)
 | 
							for (i = 0; i < sk_OPENSSL_STRING_num(sksigners); i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			signerfile = sk_STRING_value(sksigners, i);
 | 
								signerfile = sk_OPENSSL_STRING_value(sksigners, i);
 | 
				
			||||||
			keyfile = sk_STRING_value(skkeys, i);
 | 
								keyfile = sk_OPENSSL_STRING_value(skkeys, i);
 | 
				
			||||||
			signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
 | 
								signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
 | 
				
			||||||
					e, "signer certificate");
 | 
										e, "signer certificate");
 | 
				
			||||||
			if (!signer)
 | 
								if (!signer)
 | 
				
			||||||
@@ -807,9 +807,9 @@ end:
 | 
				
			|||||||
	if (vpm)
 | 
						if (vpm)
 | 
				
			||||||
		X509_VERIFY_PARAM_free(vpm);
 | 
							X509_VERIFY_PARAM_free(vpm);
 | 
				
			||||||
	if (sksigners)
 | 
						if (sksigners)
 | 
				
			||||||
		sk_STRING_free(sksigners);
 | 
							sk_OPENSSL_STRING_free(sksigners);
 | 
				
			||||||
	if (skkeys)
 | 
						if (skkeys)
 | 
				
			||||||
		sk_STRING_free(skkeys);
 | 
							sk_OPENSSL_STRING_free(skkeys);
 | 
				
			||||||
	X509_STORE_free(store);
 | 
						X509_STORE_free(store);
 | 
				
			||||||
	X509_free(cert);
 | 
						X509_free(cert);
 | 
				
			||||||
	X509_free(recip);
 | 
						X509_free(recip);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								apps/speed.c
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								apps/speed.c
									
									
									
									
									
								
							@@ -184,8 +184,18 @@
 | 
				
			|||||||
#include <openssl/ecdh.h>
 | 
					#include <openssl/ecdh.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE)
 | 
					#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
 | 
				
			||||||
@@ -200,7 +210,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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -222,8 +232,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
 | 
				
			||||||
@@ -320,9 +334,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;
 | 
				
			||||||
@@ -416,7 +427,6 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	unsigned char DES_iv[8];
 | 
						unsigned char DES_iv[8];
 | 
				
			||||||
	unsigned char iv[2*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};
 | 
				
			||||||
@@ -587,7 +597,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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -630,9 +640,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");
 | 
				
			||||||
@@ -707,7 +714,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
 | 
				
			||||||
@@ -715,7 +722,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--;
 | 
				
			||||||
@@ -1103,7 +1110,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;
 | 
				
			||||||
@@ -1113,7 +1120,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
 | 
				
			||||||
@@ -1129,6 +1136,14 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
			rsa_doit[i]=1;
 | 
								rsa_doit[i]=1;
 | 
				
			||||||
		for (i=0; i<DSA_NUM; i++)
 | 
							for (i=0; i<DSA_NUM; i++)
 | 
				
			||||||
			dsa_doit[i]=1;
 | 
								dsa_doit[i]=1;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_ECDSA
 | 
				
			||||||
 | 
							for (i=0; i<EC_NUM; i++)
 | 
				
			||||||
 | 
								ecdsa_doit[i]=1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_ECDH
 | 
				
			||||||
 | 
							for (i=0; i<EC_NUM; i++)
 | 
				
			||||||
 | 
								ecdh_doit[i]=1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	for (i=0; i<ALGOR_NUM; i++)
 | 
						for (i=0; i<ALGOR_NUM; i++)
 | 
				
			||||||
		if (doit[i]) pr_header++;
 | 
							if (doit[i]) pr_header++;
 | 
				
			||||||
@@ -1215,7 +1230,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);
 | 
				
			||||||
@@ -2324,7 +2340,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)
 | 
				
			||||||
@@ -2550,7 +2566,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];
 | 
				
			||||||
@@ -2687,6 +2703,7 @@ static int do_multi(int multi)
 | 
				
			|||||||
				else
 | 
									else
 | 
				
			||||||
					rsa_results[k][1]=d;
 | 
										rsa_results[k][1]=d;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_DSA
 | 
				
			||||||
			else if(!strncmp(buf,"+F3:",4))
 | 
								else if(!strncmp(buf,"+F3:",4))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				int k;
 | 
									int k;
 | 
				
			||||||
@@ -2708,6 +2725,7 @@ static int do_multi(int multi)
 | 
				
			|||||||
				else
 | 
									else
 | 
				
			||||||
					dsa_results[k][1]=d;
 | 
										dsa_results[k][1]=d;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifndef OPENSSL_NO_ECDSA
 | 
					#ifndef OPENSSL_NO_ECDSA
 | 
				
			||||||
			else if(!strncmp(buf,"+F4:",4))
 | 
								else if(!strncmp(buf,"+F4:",4))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -165,6 +165,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		BIO_set_fp(bio_err, stderr, BIO_NOCLOSE | BIO_FP_TEXT);
 | 
							BIO_set_fp(bio_err, stderr, BIO_NOCLOSE | BIO_FP_TEXT);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!load_config(bio_err, NULL))
 | 
				
			||||||
 | 
							goto cleanup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (argc--, argv++; argc > 0; argc--, argv++)
 | 
						for (argc--, argv++; argc > 0; argc--, argv++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (strcmp(*argv, "-config") == 0)
 | 
							if (strcmp(*argv, "-config") == 0)
 | 
				
			||||||
@@ -646,7 +649,7 @@ static ASN1_INTEGER *create_nonce(int bits)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Generating random byte sequence. */
 | 
						/* Generating random byte sequence. */
 | 
				
			||||||
	if (len > (int)sizeof(buf)) goto err;
 | 
						if (len > (int)sizeof(buf)) goto err;
 | 
				
			||||||
	if (!RAND_bytes(buf, len)) goto err;
 | 
						if (RAND_bytes(buf, len) <= 0) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Find the first non-zero byte and creating ASN1_INTEGER object. */
 | 
						/* Find the first non-zero byte and creating ASN1_INTEGER object. */
 | 
				
			||||||
	for (i = 0; i < len && !buf[i]; ++i);
 | 
						for (i = 0; i < len && !buf[i]; ++i);
 | 
				
			||||||
@@ -1080,7 +1083,7 @@ static X509_STORE *create_cert_store(char *ca_path, char *ca_file)
 | 
				
			|||||||
	cert_ctx = X509_STORE_new();
 | 
						cert_ctx = X509_STORE_new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Setting the callback for certificate chain verification. */
 | 
						/* Setting the callback for certificate chain verification. */
 | 
				
			||||||
	X509_STORE_set_verify_cb_func(cert_ctx, verify_cb);
 | 
						X509_STORE_set_verify_cb(cert_ctx, verify_cb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Adding a trusted certificate directory source. */
 | 
						/* Adding a trusted certificate directory source. */
 | 
				
			||||||
	if (ca_path)
 | 
						if (ca_path)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								apps/tsget
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								apps/tsget
									
									
									
									
									
								
							@@ -1,13 +1,13 @@
 | 
				
			|||||||
#!/usr/bin/perl -w
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
# Written by Zoltan Glozik <zglozik@stones.com>.
 | 
					# Written by Zoltan Glozik <zglozik@stones.com>.
 | 
				
			||||||
# Copyright (c) 2002 The OpenTSA Project.  All rights reserved.
 | 
					# Copyright (c) 2002 The OpenTSA Project.  All rights reserved.
 | 
				
			||||||
$::version = '$Id: tsget,v 1.1 2006/02/12 23:11:21 ulf Exp $';
 | 
					$::version = '$Id: tsget,v 1.1.2.2 2009/09/07 17:57:02 steve Exp $';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
use IO::Handle;
 | 
					use IO::Handle;
 | 
				
			||||||
use Getopt::Std;
 | 
					use Getopt::Std;
 | 
				
			||||||
use File::Basename;
 | 
					use File::Basename;
 | 
				
			||||||
use WWW::Curl::easy;
 | 
					use WWW::Curl::Easy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use vars qw(%options);
 | 
					use vars qw(%options);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -37,7 +37,7 @@ sub create_curl {
 | 
				
			|||||||
    my $url = shift;
 | 
					    my $url = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Create Curl object.
 | 
					    # Create Curl object.
 | 
				
			||||||
    my $curl = WWW::Curl::easy::new();
 | 
					    my $curl = WWW::Curl::Easy::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Error-handling related options.
 | 
					    # Error-handling related options.
 | 
				
			||||||
    $curl->setopt(CURLOPT_VERBOSE, 1) if $options{d};
 | 
					    $curl->setopt(CURLOPT_VERBOSE, 1) if $options{d};
 | 
				
			||||||
@@ -49,7 +49,7 @@ sub create_curl {
 | 
				
			|||||||
    $curl->setopt(CURLOPT_CUSTOMREQUEST, "POST");
 | 
					    $curl->setopt(CURLOPT_CUSTOMREQUEST, "POST");
 | 
				
			||||||
    $curl->setopt(CURLOPT_HTTPHEADER,
 | 
					    $curl->setopt(CURLOPT_HTTPHEADER,
 | 
				
			||||||
		["Content-Type: application/timestamp-query",
 | 
							["Content-Type: application/timestamp-query",
 | 
				
			||||||
		"Accept: application/timestamp-reply"]);
 | 
							"Accept: application/timestamp-reply,application/timestamp-response"]);
 | 
				
			||||||
    $curl->setopt(CURLOPT_READFUNCTION, \&read_body);
 | 
					    $curl->setopt(CURLOPT_READFUNCTION, \&read_body);
 | 
				
			||||||
    $curl->setopt(CURLOPT_HEADERFUNCTION, sub { return length($_[0]); });
 | 
					    $curl->setopt(CURLOPT_HEADERFUNCTION, sub { return length($_[0]); });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,7 +102,8 @@ sub get_timestamp {
 | 
				
			|||||||
	$error_string .= " ($::error_buf)" if defined($::error_buf);
 | 
						$error_string .= " ($::error_buf)" if defined($::error_buf);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        my $ct = $curl->getinfo(CURLINFO_CONTENT_TYPE);
 | 
					        my $ct = $curl->getinfo(CURLINFO_CONTENT_TYPE);
 | 
				
			||||||
	if (lc($ct) ne "application/timestamp-reply") {
 | 
						if (lc($ct) ne "application/timestamp-reply"
 | 
				
			||||||
 | 
						    && lc($ct) ne "application/timestamp-response") {
 | 
				
			||||||
	    $error_string = "unexpected content type returned: $ct";
 | 
						    $error_string = "unexpected content type returned: $ct";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -192,4 +193,4 @@ REQUEST: foreach (@ARGV) {
 | 
				
			|||||||
    STDERR->printflush(", $output written.\n") if $options{v};
 | 
					    STDERR->printflush(", $output written.\n") if $options{v};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
$curl->cleanup();
 | 
					$curl->cleanup();
 | 
				
			||||||
WWW::Curl::easy::global_cleanup();
 | 
					WWW::Curl::Easy::global_cleanup();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										165
									
								
								apps/verify.c
									
									
									
									
									
								
							
							
						
						
									
										165
									
								
								apps/verify.c
									
									
									
									
									
								
							@@ -70,8 +70,9 @@
 | 
				
			|||||||
#define PROG	verify_main
 | 
					#define PROG	verify_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx);
 | 
					static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx);
 | 
				
			||||||
static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e);
 | 
					static int check(X509_STORE *ctx, char *file,
 | 
				
			||||||
static STACK_OF(X509) *load_untrusted(char *file);
 | 
							STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
 | 
				
			||||||
 | 
							STACK_OF(X509_CRL) *crls, ENGINE *e);
 | 
				
			||||||
static int v_verbose=0, vflags = 0;
 | 
					static int v_verbose=0, vflags = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int, char **);
 | 
					int MAIN(int, char **);
 | 
				
			||||||
@@ -80,10 +81,10 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	ENGINE *e = NULL;
 | 
						ENGINE *e = NULL;
 | 
				
			||||||
	int i,ret=1, badarg = 0;
 | 
						int i,ret=1, badarg = 0;
 | 
				
			||||||
	int purpose = -1;
 | 
					 | 
				
			||||||
	char *CApath=NULL,*CAfile=NULL;
 | 
						char *CApath=NULL,*CAfile=NULL;
 | 
				
			||||||
	char *untfile = NULL, *trustfile = NULL;
 | 
						char *untfile = NULL, *trustfile = NULL, *crlfile = NULL;
 | 
				
			||||||
	STACK_OF(X509) *untrusted = NULL, *trusted = NULL;
 | 
						STACK_OF(X509) *untrusted = NULL, *trusted = NULL;
 | 
				
			||||||
 | 
						STACK_OF(X509_CRL) *crls = NULL;
 | 
				
			||||||
	X509_STORE *cert_ctx=NULL;
 | 
						X509_STORE *cert_ctx=NULL;
 | 
				
			||||||
	X509_LOOKUP *lookup=NULL;
 | 
						X509_LOOKUP *lookup=NULL;
 | 
				
			||||||
	X509_VERIFY_PARAM *vpm = NULL;
 | 
						X509_VERIFY_PARAM *vpm = NULL;
 | 
				
			||||||
@@ -93,7 +94,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cert_ctx=X509_STORE_new();
 | 
						cert_ctx=X509_STORE_new();
 | 
				
			||||||
	if (cert_ctx == NULL) goto end;
 | 
						if (cert_ctx == NULL) goto end;
 | 
				
			||||||
	X509_STORE_set_verify_cb_func(cert_ctx,cb);
 | 
						X509_STORE_set_verify_cb(cert_ctx,cb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ERR_load_crypto_strings();
 | 
						ERR_load_crypto_strings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -139,6 +140,11 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
				if (argc-- < 1) goto end;
 | 
									if (argc-- < 1) goto end;
 | 
				
			||||||
				trustfile= *(++argv);
 | 
									trustfile= *(++argv);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
								else if (strcmp(*argv,"-CRLfile") == 0)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									if (argc-- < 1) goto end;
 | 
				
			||||||
 | 
									crlfile= *(++argv);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
			else if (strcmp(*argv,"-engine") == 0)
 | 
								else if (strcmp(*argv,"-engine") == 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -192,26 +198,34 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ERR_clear_error();
 | 
						ERR_clear_error();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(untfile) {
 | 
						if(untfile)
 | 
				
			||||||
		if(!(untrusted = load_untrusted(untfile))) {
 | 
							{
 | 
				
			||||||
			BIO_printf(bio_err, "Error loading untrusted file %s\n", untfile);
 | 
							untrusted = load_certs(bio_err, untfile, FORMAT_PEM,
 | 
				
			||||||
			ERR_print_errors(bio_err);
 | 
										NULL, e, "untrusted certificates");
 | 
				
			||||||
 | 
							if(!untrusted)
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(trustfile) {
 | 
						if(trustfile)
 | 
				
			||||||
		if(!(trusted = load_untrusted(trustfile))) {
 | 
							{
 | 
				
			||||||
			BIO_printf(bio_err, "Error loading untrusted file %s\n", trustfile);
 | 
							trusted = load_certs(bio_err, trustfile, FORMAT_PEM,
 | 
				
			||||||
			ERR_print_errors(bio_err);
 | 
										NULL, e, "trusted certificates");
 | 
				
			||||||
 | 
							if(!trusted)
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, purpose, e);
 | 
						if(crlfile)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							crls = load_crls(bio_err, crlfile, FORMAT_PEM,
 | 
				
			||||||
 | 
										NULL, e, "other CRLs");
 | 
				
			||||||
 | 
							if(!crls)
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, crls, e);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		for (i=0; i<argc; i++)
 | 
							for (i=0; i<argc; i++)
 | 
				
			||||||
			check(cert_ctx,argv[i], untrusted, trusted, purpose, e);
 | 
								check(cert_ctx,argv[i], untrusted, trusted, crls, e);
 | 
				
			||||||
	ret=0;
 | 
						ret=0;
 | 
				
			||||||
end:
 | 
					end:
 | 
				
			||||||
	if (ret == 1) {
 | 
						if (ret == 1) {
 | 
				
			||||||
@@ -232,11 +246,14 @@ end:
 | 
				
			|||||||
	if (cert_ctx != NULL) X509_STORE_free(cert_ctx);
 | 
						if (cert_ctx != NULL) X509_STORE_free(cert_ctx);
 | 
				
			||||||
	sk_X509_pop_free(untrusted, X509_free);
 | 
						sk_X509_pop_free(untrusted, X509_free);
 | 
				
			||||||
	sk_X509_pop_free(trusted, X509_free);
 | 
						sk_X509_pop_free(trusted, X509_free);
 | 
				
			||||||
 | 
						sk_X509_CRL_pop_free(crls, X509_CRL_free);
 | 
				
			||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e)
 | 
					static int check(X509_STORE *ctx, char *file,
 | 
				
			||||||
 | 
							STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
 | 
				
			||||||
 | 
							STACK_OF(X509_CRL) *crls, ENGINE *e)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	X509 *x=NULL;
 | 
						X509 *x=NULL;
 | 
				
			||||||
	int i=0,ret=0;
 | 
						int i=0,ret=0;
 | 
				
			||||||
@@ -260,7 +277,8 @@ static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain);
 | 
						if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain);
 | 
				
			||||||
	if(purpose >= 0) X509_STORE_CTX_set_purpose(csc, purpose);
 | 
						if (crls)
 | 
				
			||||||
 | 
							X509_STORE_CTX_set0_crls(csc, crls);
 | 
				
			||||||
	i=X509_verify_cert(csc);
 | 
						i=X509_verify_cert(csc);
 | 
				
			||||||
	X509_STORE_CTX_free(csc);
 | 
						X509_STORE_CTX_free(csc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -278,90 +296,53 @@ end:
 | 
				
			|||||||
	return(ret);
 | 
						return(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static STACK_OF(X509) *load_untrusted(char *certfile)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	STACK_OF(X509_INFO) *sk=NULL;
 | 
					 | 
				
			||||||
	STACK_OF(X509) *stack=NULL, *ret=NULL;
 | 
					 | 
				
			||||||
	BIO *in=NULL;
 | 
					 | 
				
			||||||
	X509_INFO *xi;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(!(stack = sk_X509_new_null())) {
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"memory allocation failure\n");
 | 
					 | 
				
			||||||
		goto end;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(!(in=BIO_new_file(certfile, "r"))) {
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"error opening the file, %s\n",certfile);
 | 
					 | 
				
			||||||
		goto end;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* This loads from a file, a stack of x509/crl/pkey sets */
 | 
					 | 
				
			||||||
	if(!(sk=PEM_X509_INFO_read_bio(in,NULL,NULL,NULL))) {
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"error reading the file, %s\n",certfile);
 | 
					 | 
				
			||||||
		goto end;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* scan over it and pull out the certs */
 | 
					 | 
				
			||||||
	while (sk_X509_INFO_num(sk))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		xi=sk_X509_INFO_shift(sk);
 | 
					 | 
				
			||||||
		if (xi->x509 != NULL)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			sk_X509_push(stack,xi->x509);
 | 
					 | 
				
			||||||
			xi->x509=NULL;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		X509_INFO_free(xi);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	if(!sk_X509_num(stack)) {
 | 
					 | 
				
			||||||
		BIO_printf(bio_err,"no certificates in file, %s\n",certfile);
 | 
					 | 
				
			||||||
		sk_X509_free(stack);
 | 
					 | 
				
			||||||
		goto end;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	ret=stack;
 | 
					 | 
				
			||||||
end:
 | 
					 | 
				
			||||||
	BIO_free(in);
 | 
					 | 
				
			||||||
	sk_X509_INFO_free(sk);
 | 
					 | 
				
			||||||
	return(ret);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)
 | 
					static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	char buf[256];
 | 
						int cert_error = X509_STORE_CTX_get_error(ctx);
 | 
				
			||||||
 | 
						X509 *current_cert = X509_STORE_CTX_get_current_cert(ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!ok)
 | 
						if (!ok)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (ctx->current_cert)
 | 
							if (current_cert)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			X509_NAME_oneline(
 | 
								X509_NAME_print_ex_fp(stdout,
 | 
				
			||||||
				X509_get_subject_name(ctx->current_cert),buf,
 | 
									X509_get_subject_name(current_cert),
 | 
				
			||||||
				sizeof buf);
 | 
									0, XN_FLAG_ONELINE);
 | 
				
			||||||
			printf("%s\n",buf);
 | 
								printf("\n");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							printf("%serror %d at %d depth lookup:%s\n",
 | 
				
			||||||
 | 
								X509_STORE_CTX_get0_parent_ctx(ctx) ? "[CRL path]" : "",
 | 
				
			||||||
 | 
								cert_error,
 | 
				
			||||||
 | 
								X509_STORE_CTX_get_error_depth(ctx),
 | 
				
			||||||
 | 
								X509_verify_cert_error_string(cert_error));
 | 
				
			||||||
 | 
							switch(cert_error)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								case X509_V_ERR_NO_EXPLICIT_POLICY:
 | 
				
			||||||
 | 
									policies_print(NULL, ctx);
 | 
				
			||||||
 | 
								case X509_V_ERR_CERT_HAS_EXPIRED:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								/* since we are just checking the certificates, it is
 | 
				
			||||||
 | 
								 * ok if they are self signed. But we should still warn
 | 
				
			||||||
 | 
								 * the user.
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
 | 
				
			||||||
 | 
								/* Continue after extension errors too */
 | 
				
			||||||
 | 
								case X509_V_ERR_INVALID_CA:
 | 
				
			||||||
 | 
								case X509_V_ERR_INVALID_NON_CA:
 | 
				
			||||||
 | 
								case X509_V_ERR_PATH_LENGTH_EXCEEDED:
 | 
				
			||||||
 | 
								case X509_V_ERR_INVALID_PURPOSE:
 | 
				
			||||||
 | 
								case X509_V_ERR_CRL_HAS_EXPIRED:
 | 
				
			||||||
 | 
								case X509_V_ERR_CRL_NOT_YET_VALID:
 | 
				
			||||||
 | 
								case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
 | 
				
			||||||
 | 
								ok = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		printf("error %d at %d depth lookup:%s\n",ctx->error,
 | 
					 | 
				
			||||||
			ctx->error_depth,
 | 
					 | 
				
			||||||
			X509_verify_cert_error_string(ctx->error));
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_CERT_HAS_EXPIRED) ok=1;
 | 
					 | 
				
			||||||
		/* since we are just checking the certificates, it is
 | 
					 | 
				
			||||||
		 * ok if they are self signed. But we should still warn
 | 
					 | 
				
			||||||
		 * the user.
 | 
					 | 
				
			||||||
 		 */
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;
 | 
					 | 
				
			||||||
		/* Continue after extension errors too */
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_INVALID_CA) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_INVALID_NON_CA) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_PATH_LENGTH_EXCEEDED) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_INVALID_PURPOSE) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_CRL_HAS_EXPIRED) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_CRL_NOT_YET_VALID) ok=1;
 | 
					 | 
				
			||||||
		if (ctx->error == X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION) ok=1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (ctx->error == X509_V_ERR_NO_EXPLICIT_POLICY)
 | 
					 | 
				
			||||||
			policies_print(NULL, ctx);
 | 
					 | 
				
			||||||
		return ok;
 | 
							return ok;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if ((ctx->error == X509_V_OK) && (ok == 2))
 | 
						if (cert_error == X509_V_OK && ok == 2)
 | 
				
			||||||
		policies_print(NULL, ctx);
 | 
							policies_print(NULL, ctx);
 | 
				
			||||||
	if (!v_verbose)
 | 
						if (!v_verbose)
 | 
				
			||||||
		ERR_clear_error();
 | 
							ERR_clear_error();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										188
									
								
								apps/vms_decc_init.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										188
									
								
								apps/vms_decc_init.c
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,188 @@
 | 
				
			|||||||
 | 
					#if defined( __VMS) && !defined( OPENSSL_NO_DECC_INIT) && \
 | 
				
			||||||
 | 
					 defined( __DECC) && !defined( __VAX) && (__CRTL_VER >= 70301000)
 | 
				
			||||||
 | 
					# define USE_DECC_INIT 1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_DECC_INIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 2010-04-26 SMS.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *----------------------------------------------------------------------
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *       decc_init()
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *    On non-VAX systems, uses LIB$INITIALIZE to set a collection of C
 | 
				
			||||||
 | 
					 *    RTL features without using the DECC$* logical name method.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *----------------------------------------------------------------------
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <unixlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Global storage. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Flag to sense if decc_init() was called. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int decc_init_done = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Structure to hold a DECC$* feature name and its desired value. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    char *name;
 | 
				
			||||||
 | 
					    int value;
 | 
				
			||||||
 | 
					} decc_feat_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Array of DECC$* feature names and their desired values.
 | 
				
			||||||
 | 
					 * Note: DECC$ARGV_PARSE_STYLE is the urgent one.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					decc_feat_t decc_feat_array[] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 /* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */
 | 
				
			||||||
 | 
					 { "DECC$ARGV_PARSE_STYLE", 1 },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* Preserve case for file names on ODS5 disks. */
 | 
				
			||||||
 | 
					 { "DECC$EFS_CASE_PRESERVE", 1 },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* Enable multiple dots (and most characters) in ODS5 file names,
 | 
				
			||||||
 | 
					  * while preserving VMS-ness of ";version".
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					 { "DECC$EFS_CHARSET", 1 },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* List terminator. */
 | 
				
			||||||
 | 
					 { (char *)NULL, 0 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LIB$INITIALIZE initialization function. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void decc_init( void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    char *openssl_debug_decc_init;
 | 
				
			||||||
 | 
					    int verbose = 0;
 | 
				
			||||||
 | 
					    int feat_index;
 | 
				
			||||||
 | 
					    int feat_value;
 | 
				
			||||||
 | 
					    int feat_value_max;
 | 
				
			||||||
 | 
					    int feat_value_min;
 | 
				
			||||||
 | 
					    int i;
 | 
				
			||||||
 | 
					    int sts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Get debug option. */
 | 
				
			||||||
 | 
					    openssl_debug_decc_init = getenv( "OPENSSL_DEBUG_DECC_INIT");
 | 
				
			||||||
 | 
					    if (openssl_debug_decc_init != NULL)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        verbose = strtol( openssl_debug_decc_init, NULL, 10);
 | 
				
			||||||
 | 
					        if (verbose <= 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            verbose = 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Set the global flag to indicate that LIB$INITIALIZE worked. */
 | 
				
			||||||
 | 
					    decc_init_done = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Loop through all items in the decc_feat_array[]. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (i = 0; decc_feat_array[ i].name != NULL; i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /* Get the feature index. */
 | 
				
			||||||
 | 
					        feat_index = decc$feature_get_index( decc_feat_array[ i].name);
 | 
				
			||||||
 | 
					        if (feat_index >= 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            /* Valid item.  Collect its properties. */
 | 
				
			||||||
 | 
					            feat_value = decc$feature_get_value( feat_index, 1);
 | 
				
			||||||
 | 
					            feat_value_min = decc$feature_get_value( feat_index, 2);
 | 
				
			||||||
 | 
					            feat_value_max = decc$feature_get_value( feat_index, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /* Check the validity of our desired value. */
 | 
				
			||||||
 | 
					            if ((decc_feat_array[ i].value >= feat_value_min) &&
 | 
				
			||||||
 | 
					             (decc_feat_array[ i].value <= feat_value_max))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                /* Valid value.  Set it if necessary. */
 | 
				
			||||||
 | 
					                if (feat_value != decc_feat_array[ i].value)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    sts = decc$feature_set_value( feat_index,
 | 
				
			||||||
 | 
					                     1,
 | 
				
			||||||
 | 
					                     decc_feat_array[ i].value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     if (verbose > 1)
 | 
				
			||||||
 | 
					                     {
 | 
				
			||||||
 | 
					                         fprintf( stderr, " %s = %d, sts = %d.\n",
 | 
				
			||||||
 | 
					                          decc_feat_array[ i].name,
 | 
				
			||||||
 | 
					                          decc_feat_array[ i].value,
 | 
				
			||||||
 | 
					                          sts);
 | 
				
			||||||
 | 
					                     }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                /* Invalid DECC feature value. */
 | 
				
			||||||
 | 
					                fprintf( stderr,
 | 
				
			||||||
 | 
					                 " INVALID DECC$FEATURE VALUE, %d: %d <= %s <= %d.\n",
 | 
				
			||||||
 | 
					                 feat_value,
 | 
				
			||||||
 | 
					                 feat_value_min, decc_feat_array[ i].name, feat_value_max);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            /* Invalid DECC feature name. */
 | 
				
			||||||
 | 
					            fprintf( stderr,
 | 
				
			||||||
 | 
					             " UNKNOWN DECC$FEATURE: %s.\n", decc_feat_array[ i].name);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (verbose > 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        fprintf( stderr, " DECC_INIT complete.\n");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Get "decc_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma nostandard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
 | 
				
			||||||
 | 
					 * other attributes.  Note that "nopic" is significant only on VAX.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#pragma extern_model save
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if __INITIAL_POINTER_SIZE == 64
 | 
				
			||||||
 | 
					# define PSECT_ALIGN 3
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# define PSECT_ALIGN 2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model strict_refdef "LIB$INITIALIZ" PSECT_ALIGN, nopic, nowrt
 | 
				
			||||||
 | 
					const int spare[ 8] = { 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model strict_refdef "LIB$INITIALIZE" PSECT_ALIGN, nopic, nowrt
 | 
				
			||||||
 | 
					void (*const x_decc_init)() = decc_init;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model restore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model save
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int LIB$INITIALIZE( void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model strict_refdef
 | 
				
			||||||
 | 
					int dmy_lib$initialize = (int) LIB$INITIALIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma extern_model restore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma standard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else /* def USE_DECC_INIT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Dummy code to avoid a %CC-W-EMPTYFILE complaint. */
 | 
				
			||||||
 | 
					int decc_init_dummy( void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* def USE_DECC_INIT */
 | 
				
			||||||
							
								
								
									
										46
									
								
								apps/x509.c
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								apps/x509.c
									
									
									
									
									
								
							@@ -99,7 +99,13 @@ static const char *x509_usage[]={
 | 
				
			|||||||
" -passin arg     - private key password source\n",
 | 
					" -passin arg     - private key password source\n",
 | 
				
			||||||
" -serial         - print serial number value\n",
 | 
					" -serial         - print serial number value\n",
 | 
				
			||||||
" -subject_hash   - print subject hash value\n",
 | 
					" -subject_hash   - print subject hash value\n",
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
					" -subject_hash_old   - print old-style (MD5) subject hash value\n",
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
" -issuer_hash    - print issuer hash value\n",
 | 
					" -issuer_hash    - print issuer hash value\n",
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
					" -issuer_hash_old    - print old-style (MD5) issuer hash value\n",
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
" -hash           - synonym for -subject_hash\n",
 | 
					" -hash           - synonym for -subject_hash\n",
 | 
				
			||||||
" -subject        - print subject DN\n",
 | 
					" -subject        - print subject DN\n",
 | 
				
			||||||
" -issuer         - print issuer DN\n",
 | 
					" -issuer         - print issuer DN\n",
 | 
				
			||||||
@@ -179,6 +185,9 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
	int text=0,serial=0,subject=0,issuer=0,startdate=0,enddate=0;
 | 
						int text=0,serial=0,subject=0,issuer=0,startdate=0,enddate=0;
 | 
				
			||||||
	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;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
						int subject_hash_old=0,issuer_hash_old=0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	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 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;
 | 
				
			||||||
@@ -225,7 +234,7 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ctx=X509_STORE_new();
 | 
						ctx=X509_STORE_new();
 | 
				
			||||||
	if (ctx == NULL) goto end;
 | 
						if (ctx == NULL) goto end;
 | 
				
			||||||
	X509_STORE_set_verify_cb_func(ctx,callb);
 | 
						X509_STORE_set_verify_cb(ctx,callb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	argc--;
 | 
						argc--;
 | 
				
			||||||
	argv++;
 | 
						argv++;
 | 
				
			||||||
@@ -397,8 +406,16 @@ int MAIN(int argc, char **argv)
 | 
				
			|||||||
		else if (strcmp(*argv,"-hash") == 0
 | 
							else if (strcmp(*argv,"-hash") == 0
 | 
				
			||||||
			|| strcmp(*argv,"-subject_hash") == 0)
 | 
								|| strcmp(*argv,"-subject_hash") == 0)
 | 
				
			||||||
			subject_hash= ++num;
 | 
								subject_hash= ++num;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-subject_hash_old") == 0)
 | 
				
			||||||
 | 
								subject_hash_old= ++num;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else if (strcmp(*argv,"-issuer_hash") == 0)
 | 
							else if (strcmp(*argv,"-issuer_hash") == 0)
 | 
				
			||||||
			issuer_hash= ++num;
 | 
								issuer_hash= ++num;
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
							else if (strcmp(*argv,"-issuer_hash_old") == 0)
 | 
				
			||||||
 | 
								issuer_hash_old= ++num;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		else if (strcmp(*argv,"-subject") == 0)
 | 
							else if (strcmp(*argv,"-subject") == 0)
 | 
				
			||||||
			subject= ++num;
 | 
								subject= ++num;
 | 
				
			||||||
		else if (strcmp(*argv,"-issuer") == 0)
 | 
							else if (strcmp(*argv,"-issuer") == 0)
 | 
				
			||||||
@@ -539,7 +556,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)
 | 
				
			||||||
@@ -607,7 +623,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)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@@ -626,7 +641,7 @@ bad:
 | 
				
			|||||||
		if (!X509_set_subject_name(x,req->req_info->subject)) goto end;
 | 
							if (!X509_set_subject_name(x,req->req_info->subject)) goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		X509_gmtime_adj(X509_get_notBefore(x),0);
 | 
							X509_gmtime_adj(X509_get_notBefore(x),0);
 | 
				
			||||||
	        X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days);
 | 
						        X509_time_adj_ex(X509_get_notAfter(x),days, 0, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		pkey = X509_REQ_get_pubkey(req);
 | 
							pkey = X509_REQ_get_pubkey(req);
 | 
				
			||||||
		X509_set_pubkey(x,pkey);
 | 
							X509_set_pubkey(x,pkey);
 | 
				
			||||||
@@ -738,14 +753,14 @@ bad:
 | 
				
			|||||||
			else if ((email == i) || (ocsp_uri == i))
 | 
								else if ((email == i) || (ocsp_uri == i))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				int j;
 | 
									int j;
 | 
				
			||||||
				STACK_OF(STRING) *emlst;
 | 
									STACK_OF(OPENSSL_STRING) *emlst;
 | 
				
			||||||
				if (email == i)
 | 
									if (email == i)
 | 
				
			||||||
					emlst = X509_get1_email(x);
 | 
										emlst = X509_get1_email(x);
 | 
				
			||||||
				else
 | 
									else
 | 
				
			||||||
					emlst = X509_get1_ocsp(x);
 | 
										emlst = X509_get1_ocsp(x);
 | 
				
			||||||
				for (j = 0; j < sk_STRING_num(emlst); j++)
 | 
									for (j = 0; j < sk_OPENSSL_STRING_num(emlst); j++)
 | 
				
			||||||
					BIO_printf(STDout, "%s\n",
 | 
										BIO_printf(STDout, "%s\n",
 | 
				
			||||||
						   sk_STRING_value(emlst, j));
 | 
											   sk_OPENSSL_STRING_value(emlst, j));
 | 
				
			||||||
				X509_email_free(emlst);
 | 
									X509_email_free(emlst);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			else if (aliasout == i)
 | 
								else if (aliasout == i)
 | 
				
			||||||
@@ -759,10 +774,22 @@ bad:
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
				BIO_printf(STDout,"%08lx\n",X509_subject_name_hash(x));
 | 
									BIO_printf(STDout,"%08lx\n",X509_subject_name_hash(x));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
								else if (subject_hash_old == i)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(STDout,"%08lx\n",X509_subject_name_hash_old(x));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
			else if (issuer_hash == i)
 | 
								else if (issuer_hash == i)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash(x));
 | 
									BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash(x));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					#ifndef OPENSSL_NO_MD5
 | 
				
			||||||
 | 
								else if (issuer_hash_old == i)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
									BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash_old(x));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
			else if (pprint == i)
 | 
								else if (pprint == i)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				X509_PURPOSE *ptmp;
 | 
									X509_PURPOSE *ptmp;
 | 
				
			||||||
@@ -960,7 +987,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;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
@@ -1130,6 +1157,7 @@ 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);
 | 
				
			||||||
 | 
						X509_STORE_CTX_set_flags(&xsc, X509_V_FLAG_CHECK_SS_SIGNATURE);
 | 
				
			||||||
	if (!reqfile && X509_verify_cert(&xsc) <= 0)
 | 
						if (!reqfile && X509_verify_cert(&xsc) <= 0)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1146,7 +1174,7 @@ static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest,
 | 
				
			|||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* hardwired expired */
 | 
						/* hardwired expired */
 | 
				
			||||||
	if (X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days) == NULL)
 | 
						if (X509_time_adj_ex(X509_get_notAfter(x),days, 0, NULL) == NULL)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (clrext)
 | 
						if (clrext)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								config
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								config
									
									
									
									
									
								
							@@ -48,10 +48,10 @@ done
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# First get uname entries that we use below
 | 
					# First get uname entries that we use below
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 | 
					[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 | 
				
			||||||
RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 | 
					[ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 | 
				
			||||||
SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 | 
					[ "$SYSTEM" ] || SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 | 
				
			||||||
VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 | 
					[ "$BUILD" ] || VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Now test for ISC and SCO, since it is has a braindamaged uname.
 | 
					# Now test for ISC and SCO, since it is has a braindamaged uname.
 | 
				
			||||||
@@ -496,6 +496,12 @@ echo Operating system: $GUESSOS
 | 
				
			|||||||
# script above so we end up with values in vars but that would take
 | 
					# script above so we end up with values in vars but that would take
 | 
				
			||||||
# more time that I want to waste at the moment
 | 
					# more time that I want to waste at the moment
 | 
				
			||||||
case "$GUESSOS" in
 | 
					case "$GUESSOS" in
 | 
				
			||||||
 | 
					  uClinux*64*)
 | 
				
			||||||
 | 
					    OUT=uClinux-dist64
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					  uClinux*)
 | 
				
			||||||
 | 
					    OUT=uClinux-dist
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
  mips2-sgi-irix)
 | 
					  mips2-sgi-irix)
 | 
				
			||||||
	CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
 | 
						CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
 | 
				
			||||||
	CPU=${CPU:-0}
 | 
						CPU=${CPU:-0}
 | 
				
			||||||
@@ -769,6 +775,10 @@ case "$GUESSOS" in
 | 
				
			|||||||
	OBJECT_MODE=${OBJECT_MODE:-32}
 | 
						OBJECT_MODE=${OBJECT_MODE:-32}
 | 
				
			||||||
	if [ "$CC" = "gcc" ]; then
 | 
						if [ "$CC" = "gcc" ]; then
 | 
				
			||||||
	    OUT="aix-gcc"
 | 
						    OUT="aix-gcc"
 | 
				
			||||||
 | 
					          if [ $OBJECT_MODE -eq 64 ]; then
 | 
				
			||||||
 | 
					            echo 'Your $OBJECT_MODE was found to be set to 64'
 | 
				
			||||||
 | 
					            OUT="aix64-gcc"
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
	elif [ $OBJECT_MODE -eq 64 ]; then
 | 
						elif [ $OBJECT_MODE -eq 64 ]; then
 | 
				
			||||||
	    echo 'Your $OBJECT_MODE was found to be set to 64' 
 | 
						    echo 'Your $OBJECT_MODE was found to be set to 64' 
 | 
				
			||||||
	    OUT="aix64-cc"
 | 
						    OUT="aix64-cc"
 | 
				
			||||||
@@ -798,6 +808,8 @@ case "$GUESSOS" in
 | 
				
			|||||||
  j90-cray-unicos) OUT="cray-j90" ;;
 | 
					  j90-cray-unicos) OUT="cray-j90" ;;
 | 
				
			||||||
  nsr-tandem-nsk) OUT="tandem-c89" ;;
 | 
					  nsr-tandem-nsk) OUT="tandem-c89" ;;
 | 
				
			||||||
  beos-*) OUT="$GUESSOS" ;;
 | 
					  beos-*) OUT="$GUESSOS" ;;
 | 
				
			||||||
 | 
					  x86pc-*-qnx6) OUT="QNX6-i386" ;;
 | 
				
			||||||
 | 
					  *-*-qnx6) OUT="QNX6" ;;
 | 
				
			||||||
  *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
 | 
					  *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -813,6 +825,10 @@ esac
 | 
				
			|||||||
#  options="$options -DATALLA"
 | 
					#  options="$options -DATALLA"
 | 
				
			||||||
#fi
 | 
					#fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					($CC -Wa,--help -c -o /dev/null -x assembler /dev/null 2>&1 | \
 | 
				
			||||||
 | 
					 grep \\--noexecstack) 2>&1 > /dev/null && \
 | 
				
			||||||
 | 
					  options="$options -Wa,--noexecstack"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# gcc < 2.8 does not support -march=ultrasparc
 | 
					# gcc < 2.8 does not support -march=ultrasparc
 | 
				
			||||||
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
 | 
					if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,22 +40,18 @@
 | 
				
			|||||||
#ifndef LPDIR_H
 | 
					#ifndef LPDIR_H
 | 
				
			||||||
#include "LPdir.h"
 | 
					#include "LPdir.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#include "vms_rms.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Because some compiler options hide this macor */
 | 
					/* Some compiler options hide EVMSERR. */
 | 
				
			||||||
#ifndef EVMSERR
 | 
					#ifndef EVMSERR
 | 
				
			||||||
#define EVMSERR		65535  /* error for non-translatable VMS errors */
 | 
					# define EVMSERR	65535  /* error for non-translatable VMS errors */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct LP_dir_context_st
 | 
					struct LP_dir_context_st
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  unsigned long VMS_context;
 | 
					  unsigned long VMS_context;
 | 
				
			||||||
#ifdef NAML$C_MAXRSS
 | 
					  char filespec[ NAMX_MAXRSS+ 1];
 | 
				
			||||||
  char filespec[NAML$C_MAXRSS+1];
 | 
					  char result[ NAMX_MAXRSS+ 1];
 | 
				
			||||||
  char result[NAML$C_MAXRSS+1];
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
  char filespec[256];
 | 
					 | 
				
			||||||
  char result[256];
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  struct dsc$descriptor_d filespec_dsc;
 | 
					  struct dsc$descriptor_d filespec_dsc;
 | 
				
			||||||
  struct dsc$descriptor_d result_dsc;
 | 
					  struct dsc$descriptor_d result_dsc;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -66,6 +62,16 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
 | 
				
			|||||||
  char *p, *r;
 | 
					  char *p, *r;
 | 
				
			||||||
  size_t l;
 | 
					  size_t l;
 | 
				
			||||||
  unsigned long flags = 0;
 | 
					  unsigned long flags = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Arrange 32-bit pointer to (copied) string storage, if needed. */
 | 
				
			||||||
 | 
					#if __INITIAL_POINTER_SIZE == 64
 | 
				
			||||||
 | 
					# pragma pointer_size save
 | 
				
			||||||
 | 
					# pragma pointer_size 32
 | 
				
			||||||
 | 
					        char *ctx_filespec_32p;
 | 
				
			||||||
 | 
					# pragma pointer_size restore
 | 
				
			||||||
 | 
					        char ctx_filespec_32[ NAMX_MAXRSS+ 1];
 | 
				
			||||||
 | 
					#endif /* __INITIAL_POINTER_SIZE == 64 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef NAML$C_MAXRSS
 | 
					#ifdef NAML$C_MAXRSS
 | 
				
			||||||
  flags |= LIB$M_FIL_LONG_NAMES;
 | 
					  flags |= LIB$M_FIL_LONG_NAMES;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -93,13 +99,7 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      filespeclen += 4;		/* "*.*;" */
 | 
					      filespeclen += 4;		/* "*.*;" */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (filespeclen >
 | 
					      if (filespeclen > NAMX_MAXRSS)
 | 
				
			||||||
#ifdef NAML$C_MAXRSS
 | 
					 | 
				
			||||||
	  NAML$C_MAXRSS
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	  255
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	  )
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	  errno = ENAMETOOLONG;
 | 
						  errno = ENAMETOOLONG;
 | 
				
			||||||
	  return 0;
 | 
						  return 0;
 | 
				
			||||||
@@ -115,14 +115,21 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      strcpy((*ctx)->filespec,directory);
 | 
					      strcpy((*ctx)->filespec,directory);
 | 
				
			||||||
      strcat((*ctx)->filespec,"*.*;");
 | 
					      strcat((*ctx)->filespec,"*.*;");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Arrange 32-bit pointer to (copied) string storage, if needed. */
 | 
				
			||||||
 | 
					#if __INITIAL_POINTER_SIZE == 64
 | 
				
			||||||
 | 
					# define CTX_FILESPEC ctx_filespec_32p
 | 
				
			||||||
 | 
					        /* Copy the file name to storage with a 32-bit pointer. */
 | 
				
			||||||
 | 
					        ctx_filespec_32p = ctx_filespec_32;
 | 
				
			||||||
 | 
					        strcpy( ctx_filespec_32p, (*ctx)->filespec);
 | 
				
			||||||
 | 
					#else /* __INITIAL_POINTER_SIZE == 64 */
 | 
				
			||||||
 | 
					# define CTX_FILESPEC (*ctx)->filespec
 | 
				
			||||||
 | 
					#endif /* __INITIAL_POINTER_SIZE == 64 [else] */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      (*ctx)->filespec_dsc.dsc$w_length = filespeclen;
 | 
					      (*ctx)->filespec_dsc.dsc$w_length = filespeclen;
 | 
				
			||||||
      (*ctx)->filespec_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
 | 
					      (*ctx)->filespec_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
 | 
				
			||||||
      (*ctx)->filespec_dsc.dsc$b_class = DSC$K_CLASS_S;
 | 
					      (*ctx)->filespec_dsc.dsc$b_class = DSC$K_CLASS_S;
 | 
				
			||||||
      (*ctx)->filespec_dsc.dsc$a_pointer = (*ctx)->filespec;
 | 
					      (*ctx)->filespec_dsc.dsc$a_pointer = CTX_FILESPEC;
 | 
				
			||||||
      (*ctx)->result_dsc.dsc$w_length = 0;
 | 
					 | 
				
			||||||
      (*ctx)->result_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
 | 
					 | 
				
			||||||
      (*ctx)->result_dsc.dsc$b_class = DSC$K_CLASS_D;
 | 
					 | 
				
			||||||
      (*ctx)->result_dsc.dsc$a_pointer = 0;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (*ctx)->result_dsc.dsc$w_length = 0;
 | 
					  (*ctx)->result_dsc.dsc$w_length = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,9 @@
 | 
				
			|||||||
DIR=		crypto
 | 
					DIR=		crypto
 | 
				
			||||||
TOP=		..
 | 
					TOP=		..
 | 
				
			||||||
CC=		cc
 | 
					CC=		cc
 | 
				
			||||||
INCLUDE=	-I. -I$(TOP) -I../include
 | 
					INCLUDE=	-I. -I$(TOP) -I../include $(ZLIB_INCLUDE)
 | 
				
			||||||
# INCLUDES targets sudbirs!
 | 
					# INCLUDES targets sudbirs!
 | 
				
			||||||
INCLUDES=	-I.. -I../.. -I../asn1 -I../evp -I../../include
 | 
					INCLUDES=	-I.. -I../.. -I../asn1 -I../evp -I../../include $(ZLIB_INCLUDE)
 | 
				
			||||||
CFLAG=		-g
 | 
					CFLAG=		-g
 | 
				
			||||||
MAKEDEPPROG=	makedepend
 | 
					MAKEDEPPROG=	makedepend
 | 
				
			||||||
MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
 | 
					MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
 | 
				
			||||||
@@ -74,7 +74,9 @@ x86_64cpuid.s: x86_64cpuid.pl
 | 
				
			|||||||
	$(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@
 | 
						$(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@
 | 
				
			||||||
ia64cpuid.s: ia64cpuid.S
 | 
					ia64cpuid.s: ia64cpuid.S
 | 
				
			||||||
	$(CC) $(CFLAGS) -E ia64cpuid.S > $@
 | 
						$(CC) $(CFLAGS) -E ia64cpuid.S > $@
 | 
				
			||||||
ppccpuid.s:		ppccpuid.pl;	$(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
 | 
					ppccpuid.s:	ppccpuid.pl;	$(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
 | 
				
			||||||
 | 
					alphacpuid.s:	alphacpuid.pl
 | 
				
			||||||
 | 
						$(PERL) $< | $(CC) -E - | tee $@ > /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
testapps:
 | 
					testapps:
 | 
				
			||||||
	[ -z "$(THIS)" ] || (	if echo $(SDIRS) | fgrep ' des '; \
 | 
						[ -z "$(THIS)" ] || (	if echo $(SDIRS) | fgrep ' des '; \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,9 +85,9 @@ int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			|||||||
			A[7] ^= (unsigned char)(t & 0xff);
 | 
								A[7] ^= (unsigned char)(t & 0xff);
 | 
				
			||||||
			if (t > 0xff)	
 | 
								if (t > 0xff)	
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				A[6] ^= (unsigned char)((t & 0xff) >> 8);
 | 
									A[6] ^= (unsigned char)((t >> 8) & 0xff);
 | 
				
			||||||
				A[5] ^= (unsigned char)((t & 0xff) >> 16);
 | 
									A[5] ^= (unsigned char)((t >> 16) & 0xff);
 | 
				
			||||||
				A[4] ^= (unsigned char)((t & 0xff) >> 24);
 | 
									A[4] ^= (unsigned char)((t >> 24) & 0xff);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			memcpy(R, B + 8, 8);
 | 
								memcpy(R, B + 8, 8);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -119,9 +119,9 @@ int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
 | 
				
			|||||||
			A[7] ^= (unsigned char)(t & 0xff);
 | 
								A[7] ^= (unsigned char)(t & 0xff);
 | 
				
			||||||
			if (t > 0xff)	
 | 
								if (t > 0xff)	
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				A[6] ^= (unsigned char)((t & 0xff) >> 8);
 | 
									A[6] ^= (unsigned char)((t >> 8) & 0xff);
 | 
				
			||||||
				A[5] ^= (unsigned char)((t & 0xff) >> 16);
 | 
									A[5] ^= (unsigned char)((t >> 16) & 0xff);
 | 
				
			||||||
				A[4] ^= (unsigned char)((t & 0xff) >> 24);
 | 
									A[4] ^= (unsigned char)((t >> 24) & 0xff);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			memcpy(B + 8, R, 8);
 | 
								memcpy(B + 8, R, 8);
 | 
				
			||||||
			AES_decrypt(B, B, key);
 | 
								AES_decrypt(B, B, key);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,12 +16,20 @@
 | 
				
			|||||||
# allows to merge logical or arithmetic operation with shift or rotate
 | 
					# allows to merge logical or arithmetic operation with shift or rotate
 | 
				
			||||||
# in one instruction and emit combined result every cycle. The module
 | 
					# in one instruction and emit combined result every cycle. The module
 | 
				
			||||||
# is endian-neutral. The performance is ~42 cycles/byte for 128-bit
 | 
					# is endian-neutral. The performance is ~42 cycles/byte for 128-bit
 | 
				
			||||||
# key.
 | 
					# key [on single-issue Xscale PXA250 core].
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# May 2007.
 | 
					# May 2007.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# AES_set_[en|de]crypt_key is added.
 | 
					# AES_set_[en|de]crypt_key is added.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# July 2010.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Rescheduling for dual-issue pipeline resulted in 12% improvement on
 | 
				
			||||||
 | 
					# Cortex A8 core and ~25 cycles per byte processed with 128-bit key.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
 | 
				
			||||||
 | 
					open STDOUT,">$output";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$s0="r0";
 | 
					$s0="r0";
 | 
				
			||||||
$s1="r1";
 | 
					$s1="r1";
 | 
				
			||||||
$s2="r2";
 | 
					$s2="r2";
 | 
				
			||||||
@@ -164,24 +172,24 @@ AES_encrypt:
 | 
				
			|||||||
	ldrb	$t2,[$rounds,#1]
 | 
						ldrb	$t2,[$rounds,#1]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#0]
 | 
						ldrb	$t3,[$rounds,#0]
 | 
				
			||||||
	orr	$s0,$s0,$t1,lsl#8
 | 
						orr	$s0,$s0,$t1,lsl#8
 | 
				
			||||||
	orr	$s0,$s0,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s0,$s0,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s1,[$rounds,#7]
 | 
						ldrb	$s1,[$rounds,#7]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#6]
 | 
						ldrb	$t1,[$rounds,#6]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#5]
 | 
						ldrb	$t2,[$rounds,#5]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#4]
 | 
						ldrb	$t3,[$rounds,#4]
 | 
				
			||||||
	orr	$s1,$s1,$t1,lsl#8
 | 
						orr	$s1,$s1,$t1,lsl#8
 | 
				
			||||||
	orr	$s1,$s1,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s1,$s1,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s2,[$rounds,#11]
 | 
						ldrb	$s2,[$rounds,#11]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#10]
 | 
						ldrb	$t1,[$rounds,#10]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#9]
 | 
						ldrb	$t2,[$rounds,#9]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#8]
 | 
						ldrb	$t3,[$rounds,#8]
 | 
				
			||||||
	orr	$s2,$s2,$t1,lsl#8
 | 
						orr	$s2,$s2,$t1,lsl#8
 | 
				
			||||||
	orr	$s2,$s2,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s2,$s2,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s3,[$rounds,#15]
 | 
						ldrb	$s3,[$rounds,#15]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#14]
 | 
						ldrb	$t1,[$rounds,#14]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#13]
 | 
						ldrb	$t2,[$rounds,#13]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#12]
 | 
						ldrb	$t3,[$rounds,#12]
 | 
				
			||||||
	orr	$s3,$s3,$t1,lsl#8
 | 
						orr	$s3,$s3,$t1,lsl#8
 | 
				
			||||||
@@ -196,24 +204,24 @@ AES_encrypt:
 | 
				
			|||||||
	mov	$t3,$s0,lsr#8
 | 
						mov	$t3,$s0,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#0]
 | 
						strb	$t1,[$rounds,#0]
 | 
				
			||||||
	strb	$t2,[$rounds,#1]
 | 
						strb	$t2,[$rounds,#1]
 | 
				
			||||||
	strb	$t3,[$rounds,#2]
 | 
					 | 
				
			||||||
	strb	$s0,[$rounds,#3]
 | 
					 | 
				
			||||||
	mov	$t1,$s1,lsr#24
 | 
						mov	$t1,$s1,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#2]
 | 
				
			||||||
	mov	$t2,$s1,lsr#16
 | 
						mov	$t2,$s1,lsr#16
 | 
				
			||||||
 | 
						strb	$s0,[$rounds,#3]
 | 
				
			||||||
	mov	$t3,$s1,lsr#8
 | 
						mov	$t3,$s1,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#4]
 | 
						strb	$t1,[$rounds,#4]
 | 
				
			||||||
	strb	$t2,[$rounds,#5]
 | 
						strb	$t2,[$rounds,#5]
 | 
				
			||||||
	strb	$t3,[$rounds,#6]
 | 
					 | 
				
			||||||
	strb	$s1,[$rounds,#7]
 | 
					 | 
				
			||||||
	mov	$t1,$s2,lsr#24
 | 
						mov	$t1,$s2,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#6]
 | 
				
			||||||
	mov	$t2,$s2,lsr#16
 | 
						mov	$t2,$s2,lsr#16
 | 
				
			||||||
 | 
						strb	$s1,[$rounds,#7]
 | 
				
			||||||
	mov	$t3,$s2,lsr#8
 | 
						mov	$t3,$s2,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#8]
 | 
						strb	$t1,[$rounds,#8]
 | 
				
			||||||
	strb	$t2,[$rounds,#9]
 | 
						strb	$t2,[$rounds,#9]
 | 
				
			||||||
	strb	$t3,[$rounds,#10]
 | 
					 | 
				
			||||||
	strb	$s2,[$rounds,#11]
 | 
					 | 
				
			||||||
	mov	$t1,$s3,lsr#24
 | 
						mov	$t1,$s3,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#10]
 | 
				
			||||||
	mov	$t2,$s3,lsr#16
 | 
						mov	$t2,$s3,lsr#16
 | 
				
			||||||
 | 
						strb	$s2,[$rounds,#11]
 | 
				
			||||||
	mov	$t3,$s3,lsr#8
 | 
						mov	$t3,$s3,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#12]
 | 
						strb	$t1,[$rounds,#12]
 | 
				
			||||||
	strb	$t2,[$rounds,#13]
 | 
						strb	$t2,[$rounds,#13]
 | 
				
			||||||
@@ -230,141 +238,137 @@ AES_encrypt:
 | 
				
			|||||||
.align	2
 | 
					.align	2
 | 
				
			||||||
_armv4_AES_encrypt:
 | 
					_armv4_AES_encrypt:
 | 
				
			||||||
	str	lr,[sp,#-4]!		@ push lr
 | 
						str	lr,[sp,#-4]!		@ push lr
 | 
				
			||||||
	ldr	$t1,[$key],#16
 | 
						ldmia	$key!,{$t1-$i1}
 | 
				
			||||||
	ldr	$t2,[$key,#-12]
 | 
					 | 
				
			||||||
	ldr	$t3,[$key,#-8]
 | 
					 | 
				
			||||||
	ldr	$i1,[$key,#-4]
 | 
					 | 
				
			||||||
	ldr	$rounds,[$key,#240-16]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
						eor	$s0,$s0,$t1
 | 
				
			||||||
 | 
						ldr	$rounds,[$key,#240-16]
 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
						eor	$s1,$s1,$t2
 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
						eor	$s2,$s2,$t3
 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
						eor	$s3,$s3,$i1
 | 
				
			||||||
	sub	$rounds,$rounds,#1
 | 
						sub	$rounds,$rounds,#1
 | 
				
			||||||
	mov	lr,#255
 | 
						mov	lr,#255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Lenc_loop:
 | 
						and	$i1,lr,$s0
 | 
				
			||||||
	and	$i2,lr,$s0,lsr#8
 | 
						and	$i2,lr,$s0,lsr#8
 | 
				
			||||||
	and	$i3,lr,$s0,lsr#16
 | 
						and	$i3,lr,$s0,lsr#16
 | 
				
			||||||
	and	$i1,lr,$s0
 | 
					 | 
				
			||||||
	mov	$s0,$s0,lsr#24
 | 
						mov	$s0,$s0,lsr#24
 | 
				
			||||||
 | 
					.Lenc_loop:
 | 
				
			||||||
	ldr	$t1,[$tbl,$i1,lsl#2]	@ Te3[s0>>0]
 | 
						ldr	$t1,[$tbl,$i1,lsl#2]	@ Te3[s0>>0]
 | 
				
			||||||
	ldr	$s0,[$tbl,$s0,lsl#2]	@ Te0[s0>>24]
 | 
					 | 
				
			||||||
	ldr	$t2,[$tbl,$i2,lsl#2]	@ Te2[s0>>8]
 | 
					 | 
				
			||||||
	ldr	$t3,[$tbl,$i3,lsl#2]	@ Te1[s0>>16]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s1,lsr#16	@ i0
 | 
						and	$i1,lr,$s1,lsr#16	@ i0
 | 
				
			||||||
 | 
						ldr	$t2,[$tbl,$i2,lsl#2]	@ Te2[s0>>8]
 | 
				
			||||||
	and	$i2,lr,$s1
 | 
						and	$i2,lr,$s1
 | 
				
			||||||
 | 
						ldr	$t3,[$tbl,$i3,lsl#2]	@ Te1[s0>>16]
 | 
				
			||||||
	and	$i3,lr,$s1,lsr#8
 | 
						and	$i3,lr,$s1,lsr#8
 | 
				
			||||||
 | 
						ldr	$s0,[$tbl,$s0,lsl#2]	@ Te0[s0>>24]
 | 
				
			||||||
	mov	$s1,$s1,lsr#24
 | 
						mov	$s1,$s1,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Te1[s1>>16]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Te1[s1>>16]
 | 
				
			||||||
	ldr	$s1,[$tbl,$s1,lsl#2]	@ Te0[s1>>24]
 | 
					 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Te3[s1>>0]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Te3[s1>>0]
 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Te2[s1>>8]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Te2[s1>>8]
 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#8
 | 
						eor	$s0,$s0,$i1,ror#8
 | 
				
			||||||
	eor	$s1,$s1,$t1,ror#24
 | 
						ldr	$s1,[$tbl,$s1,lsl#2]	@ Te0[s1>>24]
 | 
				
			||||||
	eor	$t2,$t2,$i2,ror#8
 | 
					 | 
				
			||||||
	eor	$t3,$t3,$i3,ror#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s2,lsr#8	@ i0
 | 
						and	$i1,lr,$s2,lsr#8	@ i0
 | 
				
			||||||
 | 
						eor	$t2,$t2,$i2,ror#8
 | 
				
			||||||
	and	$i2,lr,$s2,lsr#16	@ i1
 | 
						and	$i2,lr,$s2,lsr#16	@ i1
 | 
				
			||||||
 | 
						eor	$t3,$t3,$i3,ror#8
 | 
				
			||||||
	and	$i3,lr,$s2
 | 
						and	$i3,lr,$s2
 | 
				
			||||||
	mov	$s2,$s2,lsr#24
 | 
						eor	$s1,$s1,$t1,ror#24
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Te2[s2>>8]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Te2[s2>>8]
 | 
				
			||||||
 | 
						mov	$s2,$s2,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Te1[s2>>16]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Te1[s2>>16]
 | 
				
			||||||
	ldr	$s2,[$tbl,$s2,lsl#2]	@ Te0[s2>>24]
 | 
					 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Te3[s2>>0]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Te3[s2>>0]
 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#16
 | 
						eor	$s0,$s0,$i1,ror#16
 | 
				
			||||||
	eor	$s1,$s1,$i2,ror#8
 | 
						ldr	$s2,[$tbl,$s2,lsl#2]	@ Te0[s2>>24]
 | 
				
			||||||
	eor	$s2,$s2,$t2,ror#16
 | 
					 | 
				
			||||||
	eor	$t3,$t3,$i3,ror#16
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s3		@ i0
 | 
						and	$i1,lr,$s3		@ i0
 | 
				
			||||||
 | 
						eor	$s1,$s1,$i2,ror#8
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#8	@ i1
 | 
						and	$i2,lr,$s3,lsr#8	@ i1
 | 
				
			||||||
 | 
						eor	$t3,$t3,$i3,ror#16
 | 
				
			||||||
	and	$i3,lr,$s3,lsr#16	@ i2
 | 
						and	$i3,lr,$s3,lsr#16	@ i2
 | 
				
			||||||
	mov	$s3,$s3,lsr#24
 | 
						eor	$s2,$s2,$t2,ror#16
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Te3[s3>>0]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Te3[s3>>0]
 | 
				
			||||||
 | 
						mov	$s3,$s3,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Te2[s3>>8]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Te2[s3>>8]
 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Te1[s3>>16]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Te1[s3>>16]
 | 
				
			||||||
	ldr	$s3,[$tbl,$s3,lsl#2]	@ Te0[s3>>24]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#24
 | 
						eor	$s0,$s0,$i1,ror#24
 | 
				
			||||||
 | 
						ldr	$s3,[$tbl,$s3,lsl#2]	@ Te0[s3>>24]
 | 
				
			||||||
	eor	$s1,$s1,$i2,ror#16
 | 
						eor	$s1,$s1,$i2,ror#16
 | 
				
			||||||
 | 
						ldr	$i1,[$key],#16
 | 
				
			||||||
	eor	$s2,$s2,$i3,ror#8
 | 
						eor	$s2,$s2,$i3,ror#8
 | 
				
			||||||
 | 
						ldr	$t1,[$key,#-12]
 | 
				
			||||||
	eor	$s3,$s3,$t3,ror#8
 | 
						eor	$s3,$s3,$t3,ror#8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$t1,[$key],#16
 | 
						ldr	$t2,[$key,#-8]
 | 
				
			||||||
	ldr	$t2,[$key,#-12]
 | 
						eor	$s0,$s0,$i1
 | 
				
			||||||
	ldr	$t3,[$key,#-8]
 | 
						ldr	$t3,[$key,#-4]
 | 
				
			||||||
	ldr	$i1,[$key,#-4]
 | 
						and	$i1,lr,$s0
 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
						eor	$s1,$s1,$t1
 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
						and	$i2,lr,$s0,lsr#8
 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
						eor	$s2,$s2,$t2
 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
						and	$i3,lr,$s0,lsr#16
 | 
				
			||||||
 | 
						eor	$s3,$s3,$t3
 | 
				
			||||||
 | 
						mov	$s0,$s0,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	subs	$rounds,$rounds,#1
 | 
						subs	$rounds,$rounds,#1
 | 
				
			||||||
	bne	.Lenc_loop
 | 
						bne	.Lenc_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	add	$tbl,$tbl,#2
 | 
						add	$tbl,$tbl,#2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	and	$i1,lr,$s0
 | 
					 | 
				
			||||||
	and	$i2,lr,$s0,lsr#8
 | 
					 | 
				
			||||||
	and	$i3,lr,$s0,lsr#16
 | 
					 | 
				
			||||||
	mov	$s0,$s0,lsr#24
 | 
					 | 
				
			||||||
	ldrb	$t1,[$tbl,$i1,lsl#2]	@ Te4[s0>>0]
 | 
						ldrb	$t1,[$tbl,$i1,lsl#2]	@ Te4[s0>>0]
 | 
				
			||||||
	ldrb	$s0,[$tbl,$s0,lsl#2]	@ Te4[s0>>24]
 | 
					 | 
				
			||||||
	ldrb	$t2,[$tbl,$i2,lsl#2]	@ Te4[s0>>8]
 | 
					 | 
				
			||||||
	ldrb	$t3,[$tbl,$i3,lsl#2]	@ Te4[s0>>16]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s1,lsr#16	@ i0
 | 
						and	$i1,lr,$s1,lsr#16	@ i0
 | 
				
			||||||
 | 
						ldrb	$t2,[$tbl,$i2,lsl#2]	@ Te4[s0>>8]
 | 
				
			||||||
	and	$i2,lr,$s1
 | 
						and	$i2,lr,$s1
 | 
				
			||||||
 | 
						ldrb	$t3,[$tbl,$i3,lsl#2]	@ Te4[s0>>16]
 | 
				
			||||||
	and	$i3,lr,$s1,lsr#8
 | 
						and	$i3,lr,$s1,lsr#8
 | 
				
			||||||
 | 
						ldrb	$s0,[$tbl,$s0,lsl#2]	@ Te4[s0>>24]
 | 
				
			||||||
	mov	$s1,$s1,lsr#24
 | 
						mov	$s1,$s1,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s1>>16]
 | 
						ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s1>>16]
 | 
				
			||||||
	ldrb	$s1,[$tbl,$s1,lsl#2]	@ Te4[s1>>24]
 | 
					 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s1>>0]
 | 
						ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s1>>0]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s1>>8]
 | 
						ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s1>>8]
 | 
				
			||||||
	eor	$s0,$i1,$s0,lsl#8
 | 
						eor	$s0,$i1,$s0,lsl#8
 | 
				
			||||||
	eor	$s1,$t1,$s1,lsl#24
 | 
						ldrb	$s1,[$tbl,$s1,lsl#2]	@ Te4[s1>>24]
 | 
				
			||||||
	eor	$t2,$i2,$t2,lsl#8
 | 
					 | 
				
			||||||
	eor	$t3,$i3,$t3,lsl#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s2,lsr#8	@ i0
 | 
						and	$i1,lr,$s2,lsr#8	@ i0
 | 
				
			||||||
 | 
						eor	$t2,$i2,$t2,lsl#8
 | 
				
			||||||
	and	$i2,lr,$s2,lsr#16	@ i1
 | 
						and	$i2,lr,$s2,lsr#16	@ i1
 | 
				
			||||||
 | 
						eor	$t3,$i3,$t3,lsl#8
 | 
				
			||||||
	and	$i3,lr,$s2
 | 
						and	$i3,lr,$s2
 | 
				
			||||||
	mov	$s2,$s2,lsr#24
 | 
						eor	$s1,$t1,$s1,lsl#24
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s2>>8]
 | 
						ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s2>>8]
 | 
				
			||||||
 | 
						mov	$s2,$s2,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s2>>16]
 | 
						ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s2>>16]
 | 
				
			||||||
	ldrb	$s2,[$tbl,$s2,lsl#2]	@ Te4[s2>>24]
 | 
					 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s2>>0]
 | 
						ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s2>>0]
 | 
				
			||||||
	eor	$s0,$i1,$s0,lsl#8
 | 
						eor	$s0,$i1,$s0,lsl#8
 | 
				
			||||||
	eor	$s1,$s1,$i2,lsl#16
 | 
						ldrb	$s2,[$tbl,$s2,lsl#2]	@ Te4[s2>>24]
 | 
				
			||||||
	eor	$s2,$t2,$s2,lsl#24
 | 
					 | 
				
			||||||
	eor	$t3,$i3,$t3,lsl#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s3		@ i0
 | 
						and	$i1,lr,$s3		@ i0
 | 
				
			||||||
 | 
						eor	$s1,$s1,$i2,lsl#16
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#8	@ i1
 | 
						and	$i2,lr,$s3,lsr#8	@ i1
 | 
				
			||||||
 | 
						eor	$t3,$i3,$t3,lsl#8
 | 
				
			||||||
	and	$i3,lr,$s3,lsr#16	@ i2
 | 
						and	$i3,lr,$s3,lsr#16	@ i2
 | 
				
			||||||
	mov	$s3,$s3,lsr#24
 | 
						eor	$s2,$t2,$s2,lsl#24
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s3>>0]
 | 
						ldrb	$i1,[$tbl,$i1,lsl#2]	@ Te4[s3>>0]
 | 
				
			||||||
 | 
						mov	$s3,$s3,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s3>>8]
 | 
						ldrb	$i2,[$tbl,$i2,lsl#2]	@ Te4[s3>>8]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s3>>16]
 | 
						ldrb	$i3,[$tbl,$i3,lsl#2]	@ Te4[s3>>16]
 | 
				
			||||||
	ldrb	$s3,[$tbl,$s3,lsl#2]	@ Te4[s3>>24]
 | 
					 | 
				
			||||||
	eor	$s0,$i1,$s0,lsl#8
 | 
						eor	$s0,$i1,$s0,lsl#8
 | 
				
			||||||
 | 
						ldrb	$s3,[$tbl,$s3,lsl#2]	@ Te4[s3>>24]
 | 
				
			||||||
 | 
						ldr	$i1,[$key,#0]
 | 
				
			||||||
	eor	$s1,$s1,$i2,lsl#8
 | 
						eor	$s1,$s1,$i2,lsl#8
 | 
				
			||||||
 | 
						ldr	$t1,[$key,#4]
 | 
				
			||||||
	eor	$s2,$s2,$i3,lsl#16
 | 
						eor	$s2,$s2,$i3,lsl#16
 | 
				
			||||||
 | 
						ldr	$t2,[$key,#8]
 | 
				
			||||||
	eor	$s3,$t3,$s3,lsl#24
 | 
						eor	$s3,$t3,$s3,lsl#24
 | 
				
			||||||
 | 
						ldr	$t3,[$key,#12]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	lr,[sp],#4		@ pop lr
 | 
						eor	$s0,$s0,$i1
 | 
				
			||||||
	ldr	$t1,[$key,#0]
 | 
						eor	$s1,$s1,$t1
 | 
				
			||||||
	ldr	$t2,[$key,#4]
 | 
						eor	$s2,$s2,$t2
 | 
				
			||||||
	ldr	$t3,[$key,#8]
 | 
						eor	$s3,$s3,$t3
 | 
				
			||||||
	ldr	$i1,[$key,#12]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
					 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
					 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
					 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sub	$tbl,$tbl,#2
 | 
						sub	$tbl,$tbl,#2
 | 
				
			||||||
	mov	pc,lr			@ return
 | 
						ldr	pc,[sp],#4		@ pop and return
 | 
				
			||||||
.size	_armv4_AES_encrypt,.-_armv4_AES_encrypt
 | 
					.size	_armv4_AES_encrypt,.-_armv4_AES_encrypt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.global AES_set_encrypt_key
 | 
					.global AES_set_encrypt_key
 | 
				
			||||||
@@ -399,31 +403,31 @@ AES_set_encrypt_key:
 | 
				
			|||||||
	ldrb	$t2,[$rounds,#1]
 | 
						ldrb	$t2,[$rounds,#1]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#0]
 | 
						ldrb	$t3,[$rounds,#0]
 | 
				
			||||||
	orr	$s0,$s0,$t1,lsl#8
 | 
						orr	$s0,$s0,$t1,lsl#8
 | 
				
			||||||
	orr	$s0,$s0,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s0,$s0,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s1,[$rounds,#7]
 | 
						ldrb	$s1,[$rounds,#7]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#6]
 | 
						ldrb	$t1,[$rounds,#6]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#5]
 | 
						ldrb	$t2,[$rounds,#5]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#4]
 | 
						ldrb	$t3,[$rounds,#4]
 | 
				
			||||||
	orr	$s1,$s1,$t1,lsl#8
 | 
						orr	$s1,$s1,$t1,lsl#8
 | 
				
			||||||
	orr	$s1,$s1,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s1,$s1,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s2,[$rounds,#11]
 | 
						ldrb	$s2,[$rounds,#11]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#10]
 | 
						ldrb	$t1,[$rounds,#10]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#9]
 | 
						ldrb	$t2,[$rounds,#9]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#8]
 | 
						ldrb	$t3,[$rounds,#8]
 | 
				
			||||||
	orr	$s2,$s2,$t1,lsl#8
 | 
						orr	$s2,$s2,$t1,lsl#8
 | 
				
			||||||
	orr	$s2,$s2,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s2,$s2,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s3,[$rounds,#15]
 | 
						ldrb	$s3,[$rounds,#15]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#14]
 | 
						ldrb	$t1,[$rounds,#14]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#13]
 | 
						ldrb	$t2,[$rounds,#13]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#12]
 | 
						ldrb	$t3,[$rounds,#12]
 | 
				
			||||||
	orr	$s3,$s3,$t1,lsl#8
 | 
						orr	$s3,$s3,$t1,lsl#8
 | 
				
			||||||
	orr	$s3,$s3,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s3,$s3,$t3,lsl#24
 | 
					 | 
				
			||||||
	str	$s0,[$key],#16
 | 
						str	$s0,[$key],#16
 | 
				
			||||||
 | 
						orr	$s3,$s3,$t2,lsl#16
 | 
				
			||||||
	str	$s1,[$key,#-12]
 | 
						str	$s1,[$key,#-12]
 | 
				
			||||||
 | 
						orr	$s3,$s3,$t3,lsl#24
 | 
				
			||||||
	str	$s2,[$key,#-8]
 | 
						str	$s2,[$key,#-8]
 | 
				
			||||||
	str	$s3,[$key,#-4]
 | 
						str	$s3,[$key,#-4]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -437,27 +441,26 @@ AES_set_encrypt_key:
 | 
				
			|||||||
.L128_loop:
 | 
					.L128_loop:
 | 
				
			||||||
	and	$t2,lr,$s3,lsr#24
 | 
						and	$t2,lr,$s3,lsr#24
 | 
				
			||||||
	and	$i1,lr,$s3,lsr#16
 | 
						and	$i1,lr,$s3,lsr#16
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#8
 | 
					 | 
				
			||||||
	and	$i3,lr,$s3
 | 
					 | 
				
			||||||
	ldrb	$t2,[$tbl,$t2]
 | 
						ldrb	$t2,[$tbl,$t2]
 | 
				
			||||||
 | 
						and	$i2,lr,$s3,lsr#8
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]
 | 
						ldrb	$i1,[$tbl,$i1]
 | 
				
			||||||
 | 
						and	$i3,lr,$s3
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]
 | 
						ldrb	$i2,[$tbl,$i2]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]
 | 
					 | 
				
			||||||
	ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
					 | 
				
			||||||
	orr	$t2,$t2,$i1,lsl#24
 | 
						orr	$t2,$t2,$i1,lsl#24
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]
 | 
				
			||||||
	orr	$t2,$t2,$i2,lsl#16
 | 
						orr	$t2,$t2,$i2,lsl#16
 | 
				
			||||||
 | 
						ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
				
			||||||
	orr	$t2,$t2,$i3,lsl#8
 | 
						orr	$t2,$t2,$i3,lsl#8
 | 
				
			||||||
	eor	$t2,$t2,$t1
 | 
						eor	$t2,$t2,$t1
 | 
				
			||||||
	eor	$s0,$s0,$t2			@ rk[4]=rk[0]^...
 | 
						eor	$s0,$s0,$t2			@ rk[4]=rk[0]^...
 | 
				
			||||||
	eor	$s1,$s1,$s0			@ rk[5]=rk[1]^rk[4]
 | 
						eor	$s1,$s1,$s0			@ rk[5]=rk[1]^rk[4]
 | 
				
			||||||
	eor	$s2,$s2,$s1			@ rk[6]=rk[2]^rk[5]
 | 
					 | 
				
			||||||
	eor	$s3,$s3,$s2			@ rk[7]=rk[3]^rk[6]
 | 
					 | 
				
			||||||
	str	$s0,[$key],#16
 | 
						str	$s0,[$key],#16
 | 
				
			||||||
 | 
						eor	$s2,$s2,$s1			@ rk[6]=rk[2]^rk[5]
 | 
				
			||||||
	str	$s1,[$key,#-12]
 | 
						str	$s1,[$key,#-12]
 | 
				
			||||||
 | 
						eor	$s3,$s3,$s2			@ rk[7]=rk[3]^rk[6]
 | 
				
			||||||
	str	$s2,[$key,#-8]
 | 
						str	$s2,[$key,#-8]
 | 
				
			||||||
	str	$s3,[$key,#-4]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	subs	$rounds,$rounds,#1
 | 
						subs	$rounds,$rounds,#1
 | 
				
			||||||
 | 
						str	$s3,[$key,#-4]
 | 
				
			||||||
	bne	.L128_loop
 | 
						bne	.L128_loop
 | 
				
			||||||
	sub	r2,$key,#176
 | 
						sub	r2,$key,#176
 | 
				
			||||||
	b	.Ldone
 | 
						b	.Ldone
 | 
				
			||||||
@@ -468,16 +471,16 @@ AES_set_encrypt_key:
 | 
				
			|||||||
	ldrb	$t2,[$rounds,#17]
 | 
						ldrb	$t2,[$rounds,#17]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#16]
 | 
						ldrb	$t3,[$rounds,#16]
 | 
				
			||||||
	orr	$i2,$i2,$t1,lsl#8
 | 
						orr	$i2,$i2,$t1,lsl#8
 | 
				
			||||||
	orr	$i2,$i2,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$i2,$i2,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$i3,[$rounds,#23]
 | 
						ldrb	$i3,[$rounds,#23]
 | 
				
			||||||
 | 
						orr	$i2,$i2,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#22]
 | 
						ldrb	$t1,[$rounds,#22]
 | 
				
			||||||
 | 
						orr	$i2,$i2,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#21]
 | 
						ldrb	$t2,[$rounds,#21]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#20]
 | 
						ldrb	$t3,[$rounds,#20]
 | 
				
			||||||
	orr	$i3,$i3,$t1,lsl#8
 | 
						orr	$i3,$i3,$t1,lsl#8
 | 
				
			||||||
	orr	$i3,$i3,$t2,lsl#16
 | 
						orr	$i3,$i3,$t2,lsl#16
 | 
				
			||||||
	orr	$i3,$i3,$t3,lsl#24
 | 
					 | 
				
			||||||
	str	$i2,[$key],#8
 | 
						str	$i2,[$key],#8
 | 
				
			||||||
 | 
						orr	$i3,$i3,$t3,lsl#24
 | 
				
			||||||
	str	$i3,[$key,#-4]
 | 
						str	$i3,[$key,#-4]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	teq	lr,#192
 | 
						teq	lr,#192
 | 
				
			||||||
@@ -491,27 +494,26 @@ AES_set_encrypt_key:
 | 
				
			|||||||
.L192_loop:
 | 
					.L192_loop:
 | 
				
			||||||
	and	$t2,lr,$i3,lsr#24
 | 
						and	$t2,lr,$i3,lsr#24
 | 
				
			||||||
	and	$i1,lr,$i3,lsr#16
 | 
						and	$i1,lr,$i3,lsr#16
 | 
				
			||||||
	and	$i2,lr,$i3,lsr#8
 | 
					 | 
				
			||||||
	and	$i3,lr,$i3
 | 
					 | 
				
			||||||
	ldrb	$t2,[$tbl,$t2]
 | 
						ldrb	$t2,[$tbl,$t2]
 | 
				
			||||||
 | 
						and	$i2,lr,$i3,lsr#8
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]
 | 
						ldrb	$i1,[$tbl,$i1]
 | 
				
			||||||
 | 
						and	$i3,lr,$i3
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]
 | 
						ldrb	$i2,[$tbl,$i2]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]
 | 
					 | 
				
			||||||
	ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
					 | 
				
			||||||
	orr	$t2,$t2,$i1,lsl#24
 | 
						orr	$t2,$t2,$i1,lsl#24
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]
 | 
				
			||||||
	orr	$t2,$t2,$i2,lsl#16
 | 
						orr	$t2,$t2,$i2,lsl#16
 | 
				
			||||||
 | 
						ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
				
			||||||
	orr	$t2,$t2,$i3,lsl#8
 | 
						orr	$t2,$t2,$i3,lsl#8
 | 
				
			||||||
	eor	$i3,$t2,$t1
 | 
						eor	$i3,$t2,$t1
 | 
				
			||||||
	eor	$s0,$s0,$i3			@ rk[6]=rk[0]^...
 | 
						eor	$s0,$s0,$i3			@ rk[6]=rk[0]^...
 | 
				
			||||||
	eor	$s1,$s1,$s0			@ rk[7]=rk[1]^rk[6]
 | 
						eor	$s1,$s1,$s0			@ rk[7]=rk[1]^rk[6]
 | 
				
			||||||
	eor	$s2,$s2,$s1			@ rk[8]=rk[2]^rk[7]
 | 
					 | 
				
			||||||
	eor	$s3,$s3,$s2			@ rk[9]=rk[3]^rk[8]
 | 
					 | 
				
			||||||
	str	$s0,[$key],#24
 | 
						str	$s0,[$key],#24
 | 
				
			||||||
 | 
						eor	$s2,$s2,$s1			@ rk[8]=rk[2]^rk[7]
 | 
				
			||||||
	str	$s1,[$key,#-20]
 | 
						str	$s1,[$key,#-20]
 | 
				
			||||||
 | 
						eor	$s3,$s3,$s2			@ rk[9]=rk[3]^rk[8]
 | 
				
			||||||
	str	$s2,[$key,#-16]
 | 
						str	$s2,[$key,#-16]
 | 
				
			||||||
	str	$s3,[$key,#-12]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	subs	$rounds,$rounds,#1
 | 
						subs	$rounds,$rounds,#1
 | 
				
			||||||
 | 
						str	$s3,[$key,#-12]
 | 
				
			||||||
	subeq	r2,$key,#216
 | 
						subeq	r2,$key,#216
 | 
				
			||||||
	beq	.Ldone
 | 
						beq	.Ldone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -529,16 +531,16 @@ AES_set_encrypt_key:
 | 
				
			|||||||
	ldrb	$t2,[$rounds,#25]
 | 
						ldrb	$t2,[$rounds,#25]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#24]
 | 
						ldrb	$t3,[$rounds,#24]
 | 
				
			||||||
	orr	$i2,$i2,$t1,lsl#8
 | 
						orr	$i2,$i2,$t1,lsl#8
 | 
				
			||||||
	orr	$i2,$i2,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$i2,$i2,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$i3,[$rounds,#31]
 | 
						ldrb	$i3,[$rounds,#31]
 | 
				
			||||||
 | 
						orr	$i2,$i2,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#30]
 | 
						ldrb	$t1,[$rounds,#30]
 | 
				
			||||||
 | 
						orr	$i2,$i2,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#29]
 | 
						ldrb	$t2,[$rounds,#29]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#28]
 | 
						ldrb	$t3,[$rounds,#28]
 | 
				
			||||||
	orr	$i3,$i3,$t1,lsl#8
 | 
						orr	$i3,$i3,$t1,lsl#8
 | 
				
			||||||
	orr	$i3,$i3,$t2,lsl#16
 | 
						orr	$i3,$i3,$t2,lsl#16
 | 
				
			||||||
	orr	$i3,$i3,$t3,lsl#24
 | 
					 | 
				
			||||||
	str	$i2,[$key],#8
 | 
						str	$i2,[$key],#8
 | 
				
			||||||
 | 
						orr	$i3,$i3,$t3,lsl#24
 | 
				
			||||||
	str	$i3,[$key,#-4]
 | 
						str	$i3,[$key,#-4]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mov	$rounds,#14
 | 
						mov	$rounds,#14
 | 
				
			||||||
@@ -550,52 +552,51 @@ AES_set_encrypt_key:
 | 
				
			|||||||
.L256_loop:
 | 
					.L256_loop:
 | 
				
			||||||
	and	$t2,lr,$i3,lsr#24
 | 
						and	$t2,lr,$i3,lsr#24
 | 
				
			||||||
	and	$i1,lr,$i3,lsr#16
 | 
						and	$i1,lr,$i3,lsr#16
 | 
				
			||||||
	and	$i2,lr,$i3,lsr#8
 | 
					 | 
				
			||||||
	and	$i3,lr,$i3
 | 
					 | 
				
			||||||
	ldrb	$t2,[$tbl,$t2]
 | 
						ldrb	$t2,[$tbl,$t2]
 | 
				
			||||||
 | 
						and	$i2,lr,$i3,lsr#8
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]
 | 
						ldrb	$i1,[$tbl,$i1]
 | 
				
			||||||
 | 
						and	$i3,lr,$i3
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]
 | 
						ldrb	$i2,[$tbl,$i2]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]
 | 
					 | 
				
			||||||
	ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
					 | 
				
			||||||
	orr	$t2,$t2,$i1,lsl#24
 | 
						orr	$t2,$t2,$i1,lsl#24
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]
 | 
				
			||||||
	orr	$t2,$t2,$i2,lsl#16
 | 
						orr	$t2,$t2,$i2,lsl#16
 | 
				
			||||||
 | 
						ldr	$t1,[$t3],#4			@ rcon[i++]
 | 
				
			||||||
	orr	$t2,$t2,$i3,lsl#8
 | 
						orr	$t2,$t2,$i3,lsl#8
 | 
				
			||||||
	eor	$i3,$t2,$t1
 | 
						eor	$i3,$t2,$t1
 | 
				
			||||||
	eor	$s0,$s0,$i3			@ rk[8]=rk[0]^...
 | 
						eor	$s0,$s0,$i3			@ rk[8]=rk[0]^...
 | 
				
			||||||
	eor	$s1,$s1,$s0			@ rk[9]=rk[1]^rk[8]
 | 
						eor	$s1,$s1,$s0			@ rk[9]=rk[1]^rk[8]
 | 
				
			||||||
	eor	$s2,$s2,$s1			@ rk[10]=rk[2]^rk[9]
 | 
					 | 
				
			||||||
	eor	$s3,$s3,$s2			@ rk[11]=rk[3]^rk[10]
 | 
					 | 
				
			||||||
	str	$s0,[$key],#32
 | 
						str	$s0,[$key],#32
 | 
				
			||||||
 | 
						eor	$s2,$s2,$s1			@ rk[10]=rk[2]^rk[9]
 | 
				
			||||||
	str	$s1,[$key,#-28]
 | 
						str	$s1,[$key,#-28]
 | 
				
			||||||
 | 
						eor	$s3,$s3,$s2			@ rk[11]=rk[3]^rk[10]
 | 
				
			||||||
	str	$s2,[$key,#-24]
 | 
						str	$s2,[$key,#-24]
 | 
				
			||||||
	str	$s3,[$key,#-20]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	subs	$rounds,$rounds,#1
 | 
						subs	$rounds,$rounds,#1
 | 
				
			||||||
 | 
						str	$s3,[$key,#-20]
 | 
				
			||||||
	subeq	r2,$key,#256
 | 
						subeq	r2,$key,#256
 | 
				
			||||||
	beq	.Ldone
 | 
						beq	.Ldone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	and	$t2,lr,$s3
 | 
						and	$t2,lr,$s3
 | 
				
			||||||
	and	$i1,lr,$s3,lsr#8
 | 
						and	$i1,lr,$s3,lsr#8
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#16
 | 
					 | 
				
			||||||
	and	$i3,lr,$s3,lsr#24
 | 
					 | 
				
			||||||
	ldrb	$t2,[$tbl,$t2]
 | 
						ldrb	$t2,[$tbl,$t2]
 | 
				
			||||||
 | 
						and	$i2,lr,$s3,lsr#16
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]
 | 
						ldrb	$i1,[$tbl,$i1]
 | 
				
			||||||
 | 
						and	$i3,lr,$s3,lsr#24
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]
 | 
						ldrb	$i2,[$tbl,$i2]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]
 | 
					 | 
				
			||||||
	orr	$t2,$t2,$i1,lsl#8
 | 
						orr	$t2,$t2,$i1,lsl#8
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]
 | 
				
			||||||
	orr	$t2,$t2,$i2,lsl#16
 | 
						orr	$t2,$t2,$i2,lsl#16
 | 
				
			||||||
 | 
						ldr	$t1,[$key,#-48]
 | 
				
			||||||
	orr	$t2,$t2,$i3,lsl#24
 | 
						orr	$t2,$t2,$i3,lsl#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$t1,[$key,#-48]
 | 
					 | 
				
			||||||
	ldr	$i1,[$key,#-44]
 | 
						ldr	$i1,[$key,#-44]
 | 
				
			||||||
	ldr	$i2,[$key,#-40]
 | 
						ldr	$i2,[$key,#-40]
 | 
				
			||||||
	ldr	$i3,[$key,#-36]
 | 
					 | 
				
			||||||
	eor	$t1,$t1,$t2			@ rk[12]=rk[4]^...
 | 
						eor	$t1,$t1,$t2			@ rk[12]=rk[4]^...
 | 
				
			||||||
 | 
						ldr	$i3,[$key,#-36]
 | 
				
			||||||
	eor	$i1,$i1,$t1			@ rk[13]=rk[5]^rk[12]
 | 
						eor	$i1,$i1,$t1			@ rk[13]=rk[5]^rk[12]
 | 
				
			||||||
	eor	$i2,$i2,$i1			@ rk[14]=rk[6]^rk[13]
 | 
					 | 
				
			||||||
	eor	$i3,$i3,$i2			@ rk[15]=rk[7]^rk[14]
 | 
					 | 
				
			||||||
	str	$t1,[$key,#-16]
 | 
						str	$t1,[$key,#-16]
 | 
				
			||||||
 | 
						eor	$i2,$i2,$i1			@ rk[14]=rk[6]^rk[13]
 | 
				
			||||||
	str	$i1,[$key,#-12]
 | 
						str	$i1,[$key,#-12]
 | 
				
			||||||
 | 
						eor	$i3,$i3,$i2			@ rk[15]=rk[7]^rk[14]
 | 
				
			||||||
	str	$i2,[$key,#-8]
 | 
						str	$i2,[$key,#-8]
 | 
				
			||||||
	str	$i3,[$key,#-4]
 | 
						str	$i3,[$key,#-4]
 | 
				
			||||||
	b	.L256_loop
 | 
						b	.L256_loop
 | 
				
			||||||
@@ -816,24 +817,24 @@ AES_decrypt:
 | 
				
			|||||||
	ldrb	$t2,[$rounds,#1]
 | 
						ldrb	$t2,[$rounds,#1]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#0]
 | 
						ldrb	$t3,[$rounds,#0]
 | 
				
			||||||
	orr	$s0,$s0,$t1,lsl#8
 | 
						orr	$s0,$s0,$t1,lsl#8
 | 
				
			||||||
	orr	$s0,$s0,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s0,$s0,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s1,[$rounds,#7]
 | 
						ldrb	$s1,[$rounds,#7]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#6]
 | 
						ldrb	$t1,[$rounds,#6]
 | 
				
			||||||
 | 
						orr	$s0,$s0,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#5]
 | 
						ldrb	$t2,[$rounds,#5]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#4]
 | 
						ldrb	$t3,[$rounds,#4]
 | 
				
			||||||
	orr	$s1,$s1,$t1,lsl#8
 | 
						orr	$s1,$s1,$t1,lsl#8
 | 
				
			||||||
	orr	$s1,$s1,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s1,$s1,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s2,[$rounds,#11]
 | 
						ldrb	$s2,[$rounds,#11]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#10]
 | 
						ldrb	$t1,[$rounds,#10]
 | 
				
			||||||
 | 
						orr	$s1,$s1,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#9]
 | 
						ldrb	$t2,[$rounds,#9]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#8]
 | 
						ldrb	$t3,[$rounds,#8]
 | 
				
			||||||
	orr	$s2,$s2,$t1,lsl#8
 | 
						orr	$s2,$s2,$t1,lsl#8
 | 
				
			||||||
	orr	$s2,$s2,$t2,lsl#16
 | 
					 | 
				
			||||||
	orr	$s2,$s2,$t3,lsl#24
 | 
					 | 
				
			||||||
	ldrb	$s3,[$rounds,#15]
 | 
						ldrb	$s3,[$rounds,#15]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t2,lsl#16
 | 
				
			||||||
	ldrb	$t1,[$rounds,#14]
 | 
						ldrb	$t1,[$rounds,#14]
 | 
				
			||||||
 | 
						orr	$s2,$s2,$t3,lsl#24
 | 
				
			||||||
	ldrb	$t2,[$rounds,#13]
 | 
						ldrb	$t2,[$rounds,#13]
 | 
				
			||||||
	ldrb	$t3,[$rounds,#12]
 | 
						ldrb	$t3,[$rounds,#12]
 | 
				
			||||||
	orr	$s3,$s3,$t1,lsl#8
 | 
						orr	$s3,$s3,$t1,lsl#8
 | 
				
			||||||
@@ -848,24 +849,24 @@ AES_decrypt:
 | 
				
			|||||||
	mov	$t3,$s0,lsr#8
 | 
						mov	$t3,$s0,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#0]
 | 
						strb	$t1,[$rounds,#0]
 | 
				
			||||||
	strb	$t2,[$rounds,#1]
 | 
						strb	$t2,[$rounds,#1]
 | 
				
			||||||
	strb	$t3,[$rounds,#2]
 | 
					 | 
				
			||||||
	strb	$s0,[$rounds,#3]
 | 
					 | 
				
			||||||
	mov	$t1,$s1,lsr#24
 | 
						mov	$t1,$s1,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#2]
 | 
				
			||||||
	mov	$t2,$s1,lsr#16
 | 
						mov	$t2,$s1,lsr#16
 | 
				
			||||||
 | 
						strb	$s0,[$rounds,#3]
 | 
				
			||||||
	mov	$t3,$s1,lsr#8
 | 
						mov	$t3,$s1,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#4]
 | 
						strb	$t1,[$rounds,#4]
 | 
				
			||||||
	strb	$t2,[$rounds,#5]
 | 
						strb	$t2,[$rounds,#5]
 | 
				
			||||||
	strb	$t3,[$rounds,#6]
 | 
					 | 
				
			||||||
	strb	$s1,[$rounds,#7]
 | 
					 | 
				
			||||||
	mov	$t1,$s2,lsr#24
 | 
						mov	$t1,$s2,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#6]
 | 
				
			||||||
	mov	$t2,$s2,lsr#16
 | 
						mov	$t2,$s2,lsr#16
 | 
				
			||||||
 | 
						strb	$s1,[$rounds,#7]
 | 
				
			||||||
	mov	$t3,$s2,lsr#8
 | 
						mov	$t3,$s2,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#8]
 | 
						strb	$t1,[$rounds,#8]
 | 
				
			||||||
	strb	$t2,[$rounds,#9]
 | 
						strb	$t2,[$rounds,#9]
 | 
				
			||||||
	strb	$t3,[$rounds,#10]
 | 
					 | 
				
			||||||
	strb	$s2,[$rounds,#11]
 | 
					 | 
				
			||||||
	mov	$t1,$s3,lsr#24
 | 
						mov	$t1,$s3,lsr#24
 | 
				
			||||||
 | 
						strb	$t3,[$rounds,#10]
 | 
				
			||||||
	mov	$t2,$s3,lsr#16
 | 
						mov	$t2,$s3,lsr#16
 | 
				
			||||||
 | 
						strb	$s2,[$rounds,#11]
 | 
				
			||||||
	mov	$t3,$s3,lsr#8
 | 
						mov	$t3,$s3,lsr#8
 | 
				
			||||||
	strb	$t1,[$rounds,#12]
 | 
						strb	$t1,[$rounds,#12]
 | 
				
			||||||
	strb	$t2,[$rounds,#13]
 | 
						strb	$t2,[$rounds,#13]
 | 
				
			||||||
@@ -882,149 +883,148 @@ AES_decrypt:
 | 
				
			|||||||
.align	2
 | 
					.align	2
 | 
				
			||||||
_armv4_AES_decrypt:
 | 
					_armv4_AES_decrypt:
 | 
				
			||||||
	str	lr,[sp,#-4]!		@ push lr
 | 
						str	lr,[sp,#-4]!		@ push lr
 | 
				
			||||||
	ldr	$t1,[$key],#16
 | 
						ldmia	$key!,{$t1-$i1}
 | 
				
			||||||
	ldr	$t2,[$key,#-12]
 | 
					 | 
				
			||||||
	ldr	$t3,[$key,#-8]
 | 
					 | 
				
			||||||
	ldr	$i1,[$key,#-4]
 | 
					 | 
				
			||||||
	ldr	$rounds,[$key,#240-16]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
						eor	$s0,$s0,$t1
 | 
				
			||||||
 | 
						ldr	$rounds,[$key,#240-16]
 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
						eor	$s1,$s1,$t2
 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
						eor	$s2,$s2,$t3
 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
						eor	$s3,$s3,$i1
 | 
				
			||||||
	sub	$rounds,$rounds,#1
 | 
						sub	$rounds,$rounds,#1
 | 
				
			||||||
	mov	lr,#255
 | 
						mov	lr,#255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Ldec_loop:
 | 
					 | 
				
			||||||
	and	$i1,lr,$s0,lsr#16
 | 
						and	$i1,lr,$s0,lsr#16
 | 
				
			||||||
	and	$i2,lr,$s0,lsr#8
 | 
						and	$i2,lr,$s0,lsr#8
 | 
				
			||||||
	and	$i3,lr,$s0
 | 
						and	$i3,lr,$s0
 | 
				
			||||||
	mov	$s0,$s0,lsr#24
 | 
						mov	$s0,$s0,lsr#24
 | 
				
			||||||
 | 
					.Ldec_loop:
 | 
				
			||||||
	ldr	$t1,[$tbl,$i1,lsl#2]	@ Td1[s0>>16]
 | 
						ldr	$t1,[$tbl,$i1,lsl#2]	@ Td1[s0>>16]
 | 
				
			||||||
	ldr	$s0,[$tbl,$s0,lsl#2]	@ Td0[s0>>24]
 | 
					 | 
				
			||||||
	ldr	$t2,[$tbl,$i2,lsl#2]	@ Td2[s0>>8]
 | 
					 | 
				
			||||||
	ldr	$t3,[$tbl,$i3,lsl#2]	@ Td3[s0>>0]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s1		@ i0
 | 
						and	$i1,lr,$s1		@ i0
 | 
				
			||||||
 | 
						ldr	$t2,[$tbl,$i2,lsl#2]	@ Td2[s0>>8]
 | 
				
			||||||
	and	$i2,lr,$s1,lsr#16
 | 
						and	$i2,lr,$s1,lsr#16
 | 
				
			||||||
 | 
						ldr	$t3,[$tbl,$i3,lsl#2]	@ Td3[s0>>0]
 | 
				
			||||||
	and	$i3,lr,$s1,lsr#8
 | 
						and	$i3,lr,$s1,lsr#8
 | 
				
			||||||
 | 
						ldr	$s0,[$tbl,$s0,lsl#2]	@ Td0[s0>>24]
 | 
				
			||||||
	mov	$s1,$s1,lsr#24
 | 
						mov	$s1,$s1,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Td3[s1>>0]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Td3[s1>>0]
 | 
				
			||||||
	ldr	$s1,[$tbl,$s1,lsl#2]	@ Td0[s1>>24]
 | 
					 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Td1[s1>>16]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Td1[s1>>16]
 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Td2[s1>>8]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Td2[s1>>8]
 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#24
 | 
						eor	$s0,$s0,$i1,ror#24
 | 
				
			||||||
	eor	$s1,$s1,$t1,ror#8
 | 
						ldr	$s1,[$tbl,$s1,lsl#2]	@ Td0[s1>>24]
 | 
				
			||||||
	eor	$t2,$i2,$t2,ror#8
 | 
					 | 
				
			||||||
	eor	$t3,$i3,$t3,ror#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s2,lsr#8	@ i0
 | 
						and	$i1,lr,$s2,lsr#8	@ i0
 | 
				
			||||||
 | 
						eor	$t2,$i2,$t2,ror#8
 | 
				
			||||||
	and	$i2,lr,$s2		@ i1
 | 
						and	$i2,lr,$s2		@ i1
 | 
				
			||||||
 | 
						eor	$t3,$i3,$t3,ror#8
 | 
				
			||||||
	and	$i3,lr,$s2,lsr#16
 | 
						and	$i3,lr,$s2,lsr#16
 | 
				
			||||||
	mov	$s2,$s2,lsr#24
 | 
						eor	$s1,$s1,$t1,ror#8
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Td2[s2>>8]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Td2[s2>>8]
 | 
				
			||||||
 | 
						mov	$s2,$s2,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Td3[s2>>0]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Td3[s2>>0]
 | 
				
			||||||
	ldr	$s2,[$tbl,$s2,lsl#2]	@ Td0[s2>>24]
 | 
					 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Td1[s2>>16]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Td1[s2>>16]
 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#16
 | 
						eor	$s0,$s0,$i1,ror#16
 | 
				
			||||||
	eor	$s1,$s1,$i2,ror#24
 | 
						ldr	$s2,[$tbl,$s2,lsl#2]	@ Td0[s2>>24]
 | 
				
			||||||
	eor	$s2,$s2,$t2,ror#8
 | 
					 | 
				
			||||||
	eor	$t3,$i3,$t3,ror#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s3,lsr#16	@ i0
 | 
						and	$i1,lr,$s3,lsr#16	@ i0
 | 
				
			||||||
 | 
						eor	$s1,$s1,$i2,ror#24
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#8	@ i1
 | 
						and	$i2,lr,$s3,lsr#8	@ i1
 | 
				
			||||||
 | 
						eor	$t3,$i3,$t3,ror#8
 | 
				
			||||||
	and	$i3,lr,$s3		@ i2
 | 
						and	$i3,lr,$s3		@ i2
 | 
				
			||||||
	mov	$s3,$s3,lsr#24
 | 
						eor	$s2,$s2,$t2,ror#8
 | 
				
			||||||
	ldr	$i1,[$tbl,$i1,lsl#2]	@ Td1[s3>>16]
 | 
						ldr	$i1,[$tbl,$i1,lsl#2]	@ Td1[s3>>16]
 | 
				
			||||||
 | 
						mov	$s3,$s3,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$i2,[$tbl,$i2,lsl#2]	@ Td2[s3>>8]
 | 
						ldr	$i2,[$tbl,$i2,lsl#2]	@ Td2[s3>>8]
 | 
				
			||||||
	ldr	$i3,[$tbl,$i3,lsl#2]	@ Td3[s3>>0]
 | 
						ldr	$i3,[$tbl,$i3,lsl#2]	@ Td3[s3>>0]
 | 
				
			||||||
	ldr	$s3,[$tbl,$s3,lsl#2]	@ Td0[s3>>24]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$i1,ror#8
 | 
						eor	$s0,$s0,$i1,ror#8
 | 
				
			||||||
 | 
						ldr	$s3,[$tbl,$s3,lsl#2]	@ Td0[s3>>24]
 | 
				
			||||||
	eor	$s1,$s1,$i2,ror#16
 | 
						eor	$s1,$s1,$i2,ror#16
 | 
				
			||||||
	eor	$s2,$s2,$i3,ror#24
 | 
						eor	$s2,$s2,$i3,ror#24
 | 
				
			||||||
 | 
						ldr	$i1,[$key],#16
 | 
				
			||||||
	eor	$s3,$s3,$t3,ror#8
 | 
						eor	$s3,$s3,$t3,ror#8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$t1,[$key],#16
 | 
						ldr	$t1,[$key,#-12]
 | 
				
			||||||
	ldr	$t2,[$key,#-12]
 | 
						ldr	$t2,[$key,#-8]
 | 
				
			||||||
	ldr	$t3,[$key,#-8]
 | 
						eor	$s0,$s0,$i1
 | 
				
			||||||
	ldr	$i1,[$key,#-4]
 | 
						ldr	$t3,[$key,#-4]
 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
						and	$i1,lr,$s0,lsr#16
 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
						eor	$s1,$s1,$t1
 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
						and	$i2,lr,$s0,lsr#8
 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
						eor	$s2,$s2,$t2
 | 
				
			||||||
 | 
						and	$i3,lr,$s0
 | 
				
			||||||
 | 
						eor	$s3,$s3,$t3
 | 
				
			||||||
 | 
						mov	$s0,$s0,lsr#24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	subs	$rounds,$rounds,#1
 | 
						subs	$rounds,$rounds,#1
 | 
				
			||||||
	bne	.Ldec_loop
 | 
						bne	.Ldec_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	add	$tbl,$tbl,#1024
 | 
						add	$tbl,$tbl,#1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	$t1,[$tbl,#0]		@ prefetch Td4
 | 
						ldr	$t2,[$tbl,#0]		@ prefetch Td4
 | 
				
			||||||
	ldr	$t2,[$tbl,#32]
 | 
						ldr	$t3,[$tbl,#32]
 | 
				
			||||||
	ldr	$t3,[$tbl,#64]
 | 
						ldr	$t1,[$tbl,#64]
 | 
				
			||||||
	ldr	$i1,[$tbl,#96]
 | 
						ldr	$t2,[$tbl,#96]
 | 
				
			||||||
	ldr	$i2,[$tbl,#128]
 | 
						ldr	$t3,[$tbl,#128]
 | 
				
			||||||
	ldr	$i3,[$tbl,#160]
 | 
						ldr	$t1,[$tbl,#160]
 | 
				
			||||||
	ldr	$t1,[$tbl,#192]
 | 
						ldr	$t2,[$tbl,#192]
 | 
				
			||||||
	ldr	$t2,[$tbl,#224]
 | 
						ldr	$t3,[$tbl,#224]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	and	$i1,lr,$s0,lsr#16
 | 
						ldrb	$s0,[$tbl,$s0]		@ Td4[s0>>24]
 | 
				
			||||||
	and	$i2,lr,$s0,lsr#8
 | 
					 | 
				
			||||||
	and	$i3,lr,$s0
 | 
					 | 
				
			||||||
	ldrb	$s0,[$tbl,$s0,lsr#24]	@ Td4[s0>>24]
 | 
					 | 
				
			||||||
	ldrb	$t1,[$tbl,$i1]		@ Td4[s0>>16]
 | 
						ldrb	$t1,[$tbl,$i1]		@ Td4[s0>>16]
 | 
				
			||||||
	ldrb	$t2,[$tbl,$i2]		@ Td4[s0>>8]
 | 
					 | 
				
			||||||
	ldrb	$t3,[$tbl,$i3]		@ Td4[s0>>0]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s1		@ i0
 | 
						and	$i1,lr,$s1		@ i0
 | 
				
			||||||
 | 
						ldrb	$t2,[$tbl,$i2]		@ Td4[s0>>8]
 | 
				
			||||||
	and	$i2,lr,$s1,lsr#16
 | 
						and	$i2,lr,$s1,lsr#16
 | 
				
			||||||
 | 
						ldrb	$t3,[$tbl,$i3]		@ Td4[s0>>0]
 | 
				
			||||||
	and	$i3,lr,$s1,lsr#8
 | 
						and	$i3,lr,$s1,lsr#8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]		@ Td4[s1>>0]
 | 
						ldrb	$i1,[$tbl,$i1]		@ Td4[s1>>0]
 | 
				
			||||||
	ldrb	$s1,[$tbl,$s1,lsr#24]	@ Td4[s1>>24]
 | 
						ldrb	$s1,[$tbl,$s1,lsr#24]	@ Td4[s1>>24]
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]		@ Td4[s1>>16]
 | 
						ldrb	$i2,[$tbl,$i2]		@ Td4[s1>>16]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]		@ Td4[s1>>8]
 | 
					 | 
				
			||||||
	eor	$s0,$i1,$s0,lsl#24
 | 
						eor	$s0,$i1,$s0,lsl#24
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]		@ Td4[s1>>8]
 | 
				
			||||||
	eor	$s1,$t1,$s1,lsl#8
 | 
						eor	$s1,$t1,$s1,lsl#8
 | 
				
			||||||
	eor	$t2,$t2,$i2,lsl#8
 | 
					 | 
				
			||||||
	eor	$t3,$t3,$i3,lsl#8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s2,lsr#8	@ i0
 | 
						and	$i1,lr,$s2,lsr#8	@ i0
 | 
				
			||||||
 | 
						eor	$t2,$t2,$i2,lsl#8
 | 
				
			||||||
	and	$i2,lr,$s2		@ i1
 | 
						and	$i2,lr,$s2		@ i1
 | 
				
			||||||
	and	$i3,lr,$s2,lsr#16
 | 
						eor	$t3,$t3,$i3,lsl#8
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]		@ Td4[s2>>8]
 | 
						ldrb	$i1,[$tbl,$i1]		@ Td4[s2>>8]
 | 
				
			||||||
 | 
						and	$i3,lr,$s2,lsr#16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]		@ Td4[s2>>0]
 | 
						ldrb	$i2,[$tbl,$i2]		@ Td4[s2>>0]
 | 
				
			||||||
	ldrb	$s2,[$tbl,$s2,lsr#24]	@ Td4[s2>>24]
 | 
						ldrb	$s2,[$tbl,$s2,lsr#24]	@ Td4[s2>>24]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]		@ Td4[s2>>16]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$i1,lsl#8
 | 
						eor	$s0,$s0,$i1,lsl#8
 | 
				
			||||||
 | 
						ldrb	$i3,[$tbl,$i3]		@ Td4[s2>>16]
 | 
				
			||||||
	eor	$s1,$i2,$s1,lsl#16
 | 
						eor	$s1,$i2,$s1,lsl#16
 | 
				
			||||||
	eor	$s2,$t2,$s2,lsl#16
 | 
					 | 
				
			||||||
	eor	$t3,$t3,$i3,lsl#16
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	and	$i1,lr,$s3,lsr#16	@ i0
 | 
						and	$i1,lr,$s3,lsr#16	@ i0
 | 
				
			||||||
 | 
						eor	$s2,$t2,$s2,lsl#16
 | 
				
			||||||
	and	$i2,lr,$s3,lsr#8	@ i1
 | 
						and	$i2,lr,$s3,lsr#8	@ i1
 | 
				
			||||||
	and	$i3,lr,$s3		@ i2
 | 
						eor	$t3,$t3,$i3,lsl#16
 | 
				
			||||||
	ldrb	$i1,[$tbl,$i1]		@ Td4[s3>>16]
 | 
						ldrb	$i1,[$tbl,$i1]		@ Td4[s3>>16]
 | 
				
			||||||
 | 
						and	$i3,lr,$s3		@ i2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldrb	$i2,[$tbl,$i2]		@ Td4[s3>>8]
 | 
						ldrb	$i2,[$tbl,$i2]		@ Td4[s3>>8]
 | 
				
			||||||
	ldrb	$i3,[$tbl,$i3]		@ Td4[s3>>0]
 | 
						ldrb	$i3,[$tbl,$i3]		@ Td4[s3>>0]
 | 
				
			||||||
	ldrb	$s3,[$tbl,$s3,lsr#24]	@ Td4[s3>>24]
 | 
						ldrb	$s3,[$tbl,$s3,lsr#24]	@ Td4[s3>>24]
 | 
				
			||||||
	eor	$s0,$s0,$i1,lsl#16
 | 
						eor	$s0,$s0,$i1,lsl#16
 | 
				
			||||||
 | 
						ldr	$i1,[$key,#0]
 | 
				
			||||||
	eor	$s1,$s1,$i2,lsl#8
 | 
						eor	$s1,$s1,$i2,lsl#8
 | 
				
			||||||
 | 
						ldr	$t1,[$key,#4]
 | 
				
			||||||
	eor	$s2,$i3,$s2,lsl#8
 | 
						eor	$s2,$i3,$s2,lsl#8
 | 
				
			||||||
 | 
						ldr	$t2,[$key,#8]
 | 
				
			||||||
	eor	$s3,$t3,$s3,lsl#24
 | 
						eor	$s3,$t3,$s3,lsl#24
 | 
				
			||||||
 | 
						ldr	$t3,[$key,#12]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ldr	lr,[sp],#4		@ pop lr
 | 
						eor	$s0,$s0,$i1
 | 
				
			||||||
	ldr	$t1,[$key,#0]
 | 
						eor	$s1,$s1,$t1
 | 
				
			||||||
	ldr	$t2,[$key,#4]
 | 
						eor	$s2,$s2,$t2
 | 
				
			||||||
	ldr	$t3,[$key,#8]
 | 
						eor	$s3,$s3,$t3
 | 
				
			||||||
	ldr	$i1,[$key,#12]
 | 
					 | 
				
			||||||
	eor	$s0,$s0,$t1
 | 
					 | 
				
			||||||
	eor	$s1,$s1,$t2
 | 
					 | 
				
			||||||
	eor	$s2,$s2,$t3
 | 
					 | 
				
			||||||
	eor	$s3,$s3,$i1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sub	$tbl,$tbl,#1024
 | 
						sub	$tbl,$tbl,#1024
 | 
				
			||||||
	mov	pc,lr			@ return
 | 
						ldr	pc,[sp],#4		@ pop and return
 | 
				
			||||||
.size	_armv4_AES_decrypt,.-_armv4_AES_decrypt
 | 
					.size	_armv4_AES_decrypt,.-_armv4_AES_decrypt
 | 
				
			||||||
.asciz	"AES for ARMv4, CRYPTOGAMS by <appro\@openssl.org>"
 | 
					.asciz	"AES for ARMv4, CRYPTOGAMS by <appro\@openssl.org>"
 | 
				
			||||||
 | 
					.align	2
 | 
				
			||||||
___
 | 
					___
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$code =~ s/\bbx\s+lr\b/.word\t0xe12fff1e/gm;	# make it possible to compile with -march=armv4
 | 
					$code =~ s/\bbx\s+lr\b/.word\t0xe12fff1e/gm;	# make it possible to compile with -march=armv4
 | 
				
			||||||
print $code;
 | 
					print $code;
 | 
				
			||||||
 | 
					close STDOUT;	# enforce flush
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,19 @@
 | 
				
			|||||||
# at 1/2 of ppc_AES_encrypt speed, while ppc_AES_decrypt_compact -
 | 
					# at 1/2 of ppc_AES_encrypt speed, while ppc_AES_decrypt_compact -
 | 
				
			||||||
# at 1/3 of ppc_AES_decrypt.
 | 
					# at 1/3 of ppc_AES_decrypt.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# February 2010
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Rescheduling instructions to favour Power6 pipeline gives 10%
 | 
				
			||||||
 | 
					# performance improvement on the platfrom in question (and marginal
 | 
				
			||||||
 | 
					# improvement even on others). It should be noted that Power6 fails
 | 
				
			||||||
 | 
					# to process byte in 18 cycles, only in 23, because it fails to issue
 | 
				
			||||||
 | 
					# 4 load instructions in two cycles, only in 3. As result non-compact
 | 
				
			||||||
 | 
					# block subroutines are 25% slower than one would expect. Compact
 | 
				
			||||||
 | 
					# functions scale better, because they have pure computational part,
 | 
				
			||||||
 | 
					# which scales perfectly with clock frequency. To be specific
 | 
				
			||||||
 | 
					# ppc_AES_encrypt_compact operates at 42 cycles per byte, while
 | 
				
			||||||
 | 
					# ppc_AES_decrypt_compact - at 55 (in 64-bit build).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$flavour = shift;
 | 
					$flavour = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($flavour =~ /64/) {
 | 
					if ($flavour =~ /64/) {
 | 
				
			||||||
@@ -376,7 +389,7 @@ $code.=<<___;
 | 
				
			|||||||
	addi	$sp,$sp,$FRAME
 | 
						addi	$sp,$sp,$FRAME
 | 
				
			||||||
	blr
 | 
						blr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.align	4
 | 
					.align	5
 | 
				
			||||||
Lppc_AES_encrypt:
 | 
					Lppc_AES_encrypt:
 | 
				
			||||||
	lwz	$acc00,240($key)
 | 
						lwz	$acc00,240($key)
 | 
				
			||||||
	lwz	$t0,0($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
@@ -397,46 +410,46 @@ Lppc_AES_encrypt:
 | 
				
			|||||||
Lenc_loop:
 | 
					Lenc_loop:
 | 
				
			||||||
	rlwinm	$acc00,$s0,`32-24+3`,21,28
 | 
						rlwinm	$acc00,$s0,`32-24+3`,21,28
 | 
				
			||||||
	rlwinm	$acc01,$s1,`32-24+3`,21,28
 | 
						rlwinm	$acc01,$s1,`32-24+3`,21,28
 | 
				
			||||||
	lwz	$t0,0($key)
 | 
					 | 
				
			||||||
	lwz	$t1,4($key)
 | 
					 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24+3`,21,28
 | 
						rlwinm	$acc02,$s2,`32-24+3`,21,28
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24+3`,21,28
 | 
						rlwinm	$acc03,$s3,`32-24+3`,21,28
 | 
				
			||||||
	lwz	$t2,8($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
	lwz	$t3,12($key)
 | 
						lwz	$t1,4($key)
 | 
				
			||||||
	rlwinm	$acc04,$s1,`32-16+3`,21,28
 | 
						rlwinm	$acc04,$s1,`32-16+3`,21,28
 | 
				
			||||||
	rlwinm	$acc05,$s2,`32-16+3`,21,28
 | 
						rlwinm	$acc05,$s2,`32-16+3`,21,28
 | 
				
			||||||
	lwzx	$acc00,$Tbl0,$acc00
 | 
						lwz	$t2,8($key)
 | 
				
			||||||
	lwzx	$acc01,$Tbl0,$acc01
 | 
						lwz	$t3,12($key)
 | 
				
			||||||
	rlwinm	$acc06,$s3,`32-16+3`,21,28
 | 
						rlwinm	$acc06,$s3,`32-16+3`,21,28
 | 
				
			||||||
	rlwinm	$acc07,$s0,`32-16+3`,21,28
 | 
						rlwinm	$acc07,$s0,`32-16+3`,21,28
 | 
				
			||||||
	lwzx	$acc02,$Tbl0,$acc02
 | 
						lwzx	$acc00,$Tbl0,$acc00
 | 
				
			||||||
	lwzx	$acc03,$Tbl0,$acc03
 | 
						lwzx	$acc01,$Tbl0,$acc01
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8+3`,21,28
 | 
						rlwinm	$acc08,$s2,`32-8+3`,21,28
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8+3`,21,28
 | 
						rlwinm	$acc09,$s3,`32-8+3`,21,28
 | 
				
			||||||
	lwzx	$acc04,$Tbl1,$acc04
 | 
						lwzx	$acc02,$Tbl0,$acc02
 | 
				
			||||||
	lwzx	$acc05,$Tbl1,$acc05
 | 
						lwzx	$acc03,$Tbl0,$acc03
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8+3`,21,28
 | 
						rlwinm	$acc10,$s0,`32-8+3`,21,28
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8+3`,21,28
 | 
						rlwinm	$acc11,$s1,`32-8+3`,21,28
 | 
				
			||||||
	lwzx	$acc06,$Tbl1,$acc06
 | 
						lwzx	$acc04,$Tbl1,$acc04
 | 
				
			||||||
	lwzx	$acc07,$Tbl1,$acc07
 | 
						lwzx	$acc05,$Tbl1,$acc05
 | 
				
			||||||
	rlwinm	$acc12,$s3,`0+3`,21,28
 | 
						rlwinm	$acc12,$s3,`0+3`,21,28
 | 
				
			||||||
	rlwinm	$acc13,$s0,`0+3`,21,28
 | 
						rlwinm	$acc13,$s0,`0+3`,21,28
 | 
				
			||||||
	lwzx	$acc08,$Tbl2,$acc08
 | 
						lwzx	$acc06,$Tbl1,$acc06
 | 
				
			||||||
	lwzx	$acc09,$Tbl2,$acc09
 | 
						lwzx	$acc07,$Tbl1,$acc07
 | 
				
			||||||
	rlwinm	$acc14,$s1,`0+3`,21,28
 | 
						rlwinm	$acc14,$s1,`0+3`,21,28
 | 
				
			||||||
	rlwinm	$acc15,$s2,`0+3`,21,28
 | 
						rlwinm	$acc15,$s2,`0+3`,21,28
 | 
				
			||||||
	lwzx	$acc10,$Tbl2,$acc10
 | 
						lwzx	$acc08,$Tbl2,$acc08
 | 
				
			||||||
	lwzx	$acc11,$Tbl2,$acc11
 | 
						lwzx	$acc09,$Tbl2,$acc09
 | 
				
			||||||
	xor	$t0,$t0,$acc00
 | 
						xor	$t0,$t0,$acc00
 | 
				
			||||||
	xor	$t1,$t1,$acc01
 | 
						xor	$t1,$t1,$acc01
 | 
				
			||||||
	lwzx	$acc12,$Tbl3,$acc12
 | 
						lwzx	$acc10,$Tbl2,$acc10
 | 
				
			||||||
	lwzx	$acc13,$Tbl3,$acc13
 | 
						lwzx	$acc11,$Tbl2,$acc11
 | 
				
			||||||
	xor	$t2,$t2,$acc02
 | 
						xor	$t2,$t2,$acc02
 | 
				
			||||||
	xor	$t3,$t3,$acc03
 | 
						xor	$t3,$t3,$acc03
 | 
				
			||||||
	lwzx	$acc14,$Tbl3,$acc14
 | 
						lwzx	$acc12,$Tbl3,$acc12
 | 
				
			||||||
	lwzx	$acc15,$Tbl3,$acc15
 | 
						lwzx	$acc13,$Tbl3,$acc13
 | 
				
			||||||
	xor	$t0,$t0,$acc04
 | 
						xor	$t0,$t0,$acc04
 | 
				
			||||||
	xor	$t1,$t1,$acc05
 | 
						xor	$t1,$t1,$acc05
 | 
				
			||||||
 | 
						lwzx	$acc14,$Tbl3,$acc14
 | 
				
			||||||
 | 
						lwzx	$acc15,$Tbl3,$acc15
 | 
				
			||||||
	xor	$t2,$t2,$acc06
 | 
						xor	$t2,$t2,$acc06
 | 
				
			||||||
	xor	$t3,$t3,$acc07
 | 
						xor	$t3,$t3,$acc07
 | 
				
			||||||
	xor	$t0,$t0,$acc08
 | 
						xor	$t0,$t0,$acc08
 | 
				
			||||||
@@ -452,60 +465,60 @@ Lenc_loop:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	addi	$Tbl2,$Tbl0,2048
 | 
						addi	$Tbl2,$Tbl0,2048
 | 
				
			||||||
	nop
 | 
						nop
 | 
				
			||||||
	lwz	$acc08,`2048+0`($Tbl0)	! prefetch Te4
 | 
					 | 
				
			||||||
	lwz	$acc09,`2048+32`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc10,`2048+64`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc11,`2048+96`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc08,`2048+128`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc09,`2048+160`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc10,`2048+192`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc11,`2048+224`($Tbl0)
 | 
					 | 
				
			||||||
	rlwinm	$acc00,$s0,`32-24`,24,31
 | 
					 | 
				
			||||||
	rlwinm	$acc01,$s1,`32-24`,24,31
 | 
					 | 
				
			||||||
	lwz	$t0,0($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
	lwz	$t1,4($key)
 | 
						lwz	$t1,4($key)
 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24`,24,31
 | 
						rlwinm	$acc00,$s0,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24`,24,31
 | 
						rlwinm	$acc01,$s1,`32-24`,24,31
 | 
				
			||||||
	lwz	$t2,8($key)
 | 
						lwz	$t2,8($key)
 | 
				
			||||||
	lwz	$t3,12($key)
 | 
						lwz	$t3,12($key)
 | 
				
			||||||
 | 
						rlwinm	$acc02,$s2,`32-24`,24,31
 | 
				
			||||||
 | 
						rlwinm	$acc03,$s3,`32-24`,24,31
 | 
				
			||||||
 | 
						lwz	$acc08,`2048+0`($Tbl0)	! prefetch Te4
 | 
				
			||||||
 | 
						lwz	$acc09,`2048+32`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc04,$s1,`32-16`,24,31
 | 
						rlwinm	$acc04,$s1,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc05,$s2,`32-16`,24,31
 | 
						rlwinm	$acc05,$s2,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc00,$Tbl2,$acc00
 | 
						lwz	$acc10,`2048+64`($Tbl0)
 | 
				
			||||||
	lbzx	$acc01,$Tbl2,$acc01
 | 
						lwz	$acc11,`2048+96`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc06,$s3,`32-16`,24,31
 | 
						rlwinm	$acc06,$s3,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc07,$s0,`32-16`,24,31
 | 
						rlwinm	$acc07,$s0,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc02,$Tbl2,$acc02
 | 
						lwz	$acc12,`2048+128`($Tbl0)
 | 
				
			||||||
	lbzx	$acc03,$Tbl2,$acc03
 | 
						lwz	$acc13,`2048+160`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8`,24,31
 | 
						rlwinm	$acc08,$s2,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8`,24,31
 | 
						rlwinm	$acc09,$s3,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc04,$Tbl2,$acc04
 | 
						lwz	$acc14,`2048+192`($Tbl0)
 | 
				
			||||||
	lbzx	$acc05,$Tbl2,$acc05
 | 
						lwz	$acc15,`2048+224`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8`,24,31
 | 
						rlwinm	$acc10,$s0,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8`,24,31
 | 
						rlwinm	$acc11,$s1,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc06,$Tbl2,$acc06
 | 
						lbzx	$acc00,$Tbl2,$acc00
 | 
				
			||||||
	lbzx	$acc07,$Tbl2,$acc07
 | 
						lbzx	$acc01,$Tbl2,$acc01
 | 
				
			||||||
	rlwinm	$acc12,$s3,`0`,24,31
 | 
						rlwinm	$acc12,$s3,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc13,$s0,`0`,24,31
 | 
						rlwinm	$acc13,$s0,`0`,24,31
 | 
				
			||||||
	lbzx	$acc08,$Tbl2,$acc08
 | 
						lbzx	$acc02,$Tbl2,$acc02
 | 
				
			||||||
	lbzx	$acc09,$Tbl2,$acc09
 | 
						lbzx	$acc03,$Tbl2,$acc03
 | 
				
			||||||
	rlwinm	$acc14,$s1,`0`,24,31
 | 
						rlwinm	$acc14,$s1,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc15,$s2,`0`,24,31
 | 
						rlwinm	$acc15,$s2,`0`,24,31
 | 
				
			||||||
	lbzx	$acc10,$Tbl2,$acc10
 | 
						lbzx	$acc04,$Tbl2,$acc04
 | 
				
			||||||
	lbzx	$acc11,$Tbl2,$acc11
 | 
						lbzx	$acc05,$Tbl2,$acc05
 | 
				
			||||||
	rlwinm	$s0,$acc00,24,0,7
 | 
						rlwinm	$s0,$acc00,24,0,7
 | 
				
			||||||
	rlwinm	$s1,$acc01,24,0,7
 | 
						rlwinm	$s1,$acc01,24,0,7
 | 
				
			||||||
	lbzx	$acc12,$Tbl2,$acc12
 | 
						lbzx	$acc06,$Tbl2,$acc06
 | 
				
			||||||
	lbzx	$acc13,$Tbl2,$acc13
 | 
						lbzx	$acc07,$Tbl2,$acc07
 | 
				
			||||||
	rlwinm	$s2,$acc02,24,0,7
 | 
						rlwinm	$s2,$acc02,24,0,7
 | 
				
			||||||
	rlwinm	$s3,$acc03,24,0,7
 | 
						rlwinm	$s3,$acc03,24,0,7
 | 
				
			||||||
	lbzx	$acc14,$Tbl2,$acc14
 | 
						lbzx	$acc08,$Tbl2,$acc08
 | 
				
			||||||
	lbzx	$acc15,$Tbl2,$acc15
 | 
						lbzx	$acc09,$Tbl2,$acc09
 | 
				
			||||||
	rlwimi	$s0,$acc04,16,8,15
 | 
						rlwimi	$s0,$acc04,16,8,15
 | 
				
			||||||
	rlwimi	$s1,$acc05,16,8,15
 | 
						rlwimi	$s1,$acc05,16,8,15
 | 
				
			||||||
 | 
						lbzx	$acc10,$Tbl2,$acc10
 | 
				
			||||||
 | 
						lbzx	$acc11,$Tbl2,$acc11
 | 
				
			||||||
	rlwimi	$s2,$acc06,16,8,15
 | 
						rlwimi	$s2,$acc06,16,8,15
 | 
				
			||||||
	rlwimi	$s3,$acc07,16,8,15
 | 
						rlwimi	$s3,$acc07,16,8,15
 | 
				
			||||||
 | 
						lbzx	$acc12,$Tbl2,$acc12
 | 
				
			||||||
 | 
						lbzx	$acc13,$Tbl2,$acc13
 | 
				
			||||||
	rlwimi	$s0,$acc08,8,16,23
 | 
						rlwimi	$s0,$acc08,8,16,23
 | 
				
			||||||
	rlwimi	$s1,$acc09,8,16,23
 | 
						rlwimi	$s1,$acc09,8,16,23
 | 
				
			||||||
 | 
						lbzx	$acc14,$Tbl2,$acc14
 | 
				
			||||||
 | 
						lbzx	$acc15,$Tbl2,$acc15
 | 
				
			||||||
	rlwimi	$s2,$acc10,8,16,23
 | 
						rlwimi	$s2,$acc10,8,16,23
 | 
				
			||||||
	rlwimi	$s3,$acc11,8,16,23
 | 
						rlwimi	$s3,$acc11,8,16,23
 | 
				
			||||||
	or	$s0,$s0,$acc12
 | 
						or	$s0,$s0,$acc12
 | 
				
			||||||
@@ -542,40 +555,40 @@ Lenc_compact_loop:
 | 
				
			|||||||
	rlwinm	$acc01,$s1,`32-24`,24,31
 | 
						rlwinm	$acc01,$s1,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24`,24,31
 | 
						rlwinm	$acc02,$s2,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24`,24,31
 | 
						rlwinm	$acc03,$s3,`32-24`,24,31
 | 
				
			||||||
	lbzx	$acc00,$Tbl1,$acc00
 | 
					 | 
				
			||||||
	lbzx	$acc01,$Tbl1,$acc01
 | 
					 | 
				
			||||||
	rlwinm	$acc04,$s1,`32-16`,24,31
 | 
						rlwinm	$acc04,$s1,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc05,$s2,`32-16`,24,31
 | 
						rlwinm	$acc05,$s2,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc02,$Tbl1,$acc02
 | 
					 | 
				
			||||||
	lbzx	$acc03,$Tbl1,$acc03
 | 
					 | 
				
			||||||
	rlwinm	$acc06,$s3,`32-16`,24,31
 | 
						rlwinm	$acc06,$s3,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc07,$s0,`32-16`,24,31
 | 
						rlwinm	$acc07,$s0,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc04,$Tbl1,$acc04
 | 
						lbzx	$acc00,$Tbl1,$acc00
 | 
				
			||||||
	lbzx	$acc05,$Tbl1,$acc05
 | 
						lbzx	$acc01,$Tbl1,$acc01
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8`,24,31
 | 
						rlwinm	$acc08,$s2,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8`,24,31
 | 
						rlwinm	$acc09,$s3,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc06,$Tbl1,$acc06
 | 
						lbzx	$acc02,$Tbl1,$acc02
 | 
				
			||||||
	lbzx	$acc07,$Tbl1,$acc07
 | 
						lbzx	$acc03,$Tbl1,$acc03
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8`,24,31
 | 
						rlwinm	$acc10,$s0,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8`,24,31
 | 
						rlwinm	$acc11,$s1,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc08,$Tbl1,$acc08
 | 
						lbzx	$acc04,$Tbl1,$acc04
 | 
				
			||||||
	lbzx	$acc09,$Tbl1,$acc09
 | 
						lbzx	$acc05,$Tbl1,$acc05
 | 
				
			||||||
	rlwinm	$acc12,$s3,`0`,24,31
 | 
						rlwinm	$acc12,$s3,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc13,$s0,`0`,24,31
 | 
						rlwinm	$acc13,$s0,`0`,24,31
 | 
				
			||||||
	lbzx	$acc10,$Tbl1,$acc10
 | 
						lbzx	$acc06,$Tbl1,$acc06
 | 
				
			||||||
	lbzx	$acc11,$Tbl1,$acc11
 | 
						lbzx	$acc07,$Tbl1,$acc07
 | 
				
			||||||
	rlwinm	$acc14,$s1,`0`,24,31
 | 
						rlwinm	$acc14,$s1,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc15,$s2,`0`,24,31
 | 
						rlwinm	$acc15,$s2,`0`,24,31
 | 
				
			||||||
	lbzx	$acc12,$Tbl1,$acc12
 | 
						lbzx	$acc08,$Tbl1,$acc08
 | 
				
			||||||
	lbzx	$acc13,$Tbl1,$acc13
 | 
						lbzx	$acc09,$Tbl1,$acc09
 | 
				
			||||||
	rlwinm	$s0,$acc00,24,0,7
 | 
						rlwinm	$s0,$acc00,24,0,7
 | 
				
			||||||
	rlwinm	$s1,$acc01,24,0,7
 | 
						rlwinm	$s1,$acc01,24,0,7
 | 
				
			||||||
	lbzx	$acc14,$Tbl1,$acc14
 | 
						lbzx	$acc10,$Tbl1,$acc10
 | 
				
			||||||
	lbzx	$acc15,$Tbl1,$acc15
 | 
						lbzx	$acc11,$Tbl1,$acc11
 | 
				
			||||||
	rlwinm	$s2,$acc02,24,0,7
 | 
						rlwinm	$s2,$acc02,24,0,7
 | 
				
			||||||
	rlwinm	$s3,$acc03,24,0,7
 | 
						rlwinm	$s3,$acc03,24,0,7
 | 
				
			||||||
 | 
						lbzx	$acc12,$Tbl1,$acc12
 | 
				
			||||||
 | 
						lbzx	$acc13,$Tbl1,$acc13
 | 
				
			||||||
	rlwimi	$s0,$acc04,16,8,15
 | 
						rlwimi	$s0,$acc04,16,8,15
 | 
				
			||||||
	rlwimi	$s1,$acc05,16,8,15
 | 
						rlwimi	$s1,$acc05,16,8,15
 | 
				
			||||||
 | 
						lbzx	$acc14,$Tbl1,$acc14
 | 
				
			||||||
 | 
						lbzx	$acc15,$Tbl1,$acc15
 | 
				
			||||||
	rlwimi	$s2,$acc06,16,8,15
 | 
						rlwimi	$s2,$acc06,16,8,15
 | 
				
			||||||
	rlwimi	$s3,$acc07,16,8,15
 | 
						rlwimi	$s3,$acc07,16,8,15
 | 
				
			||||||
	rlwimi	$s0,$acc08,8,16,23
 | 
						rlwimi	$s0,$acc08,8,16,23
 | 
				
			||||||
@@ -725,7 +738,7 @@ Lenc_compact_done:
 | 
				
			|||||||
	addi	$sp,$sp,$FRAME
 | 
						addi	$sp,$sp,$FRAME
 | 
				
			||||||
	blr
 | 
						blr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.align	4
 | 
					.align	5
 | 
				
			||||||
Lppc_AES_decrypt:
 | 
					Lppc_AES_decrypt:
 | 
				
			||||||
	lwz	$acc00,240($key)
 | 
						lwz	$acc00,240($key)
 | 
				
			||||||
	lwz	$t0,0($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
@@ -746,46 +759,46 @@ Lppc_AES_decrypt:
 | 
				
			|||||||
Ldec_loop:
 | 
					Ldec_loop:
 | 
				
			||||||
	rlwinm	$acc00,$s0,`32-24+3`,21,28
 | 
						rlwinm	$acc00,$s0,`32-24+3`,21,28
 | 
				
			||||||
	rlwinm	$acc01,$s1,`32-24+3`,21,28
 | 
						rlwinm	$acc01,$s1,`32-24+3`,21,28
 | 
				
			||||||
	lwz	$t0,0($key)
 | 
					 | 
				
			||||||
	lwz	$t1,4($key)
 | 
					 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24+3`,21,28
 | 
						rlwinm	$acc02,$s2,`32-24+3`,21,28
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24+3`,21,28
 | 
						rlwinm	$acc03,$s3,`32-24+3`,21,28
 | 
				
			||||||
	lwz	$t2,8($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
	lwz	$t3,12($key)
 | 
						lwz	$t1,4($key)
 | 
				
			||||||
	rlwinm	$acc04,$s3,`32-16+3`,21,28
 | 
						rlwinm	$acc04,$s3,`32-16+3`,21,28
 | 
				
			||||||
	rlwinm	$acc05,$s0,`32-16+3`,21,28
 | 
						rlwinm	$acc05,$s0,`32-16+3`,21,28
 | 
				
			||||||
	lwzx	$acc00,$Tbl0,$acc00
 | 
						lwz	$t2,8($key)
 | 
				
			||||||
	lwzx	$acc01,$Tbl0,$acc01
 | 
						lwz	$t3,12($key)
 | 
				
			||||||
	rlwinm	$acc06,$s1,`32-16+3`,21,28
 | 
						rlwinm	$acc06,$s1,`32-16+3`,21,28
 | 
				
			||||||
	rlwinm	$acc07,$s2,`32-16+3`,21,28
 | 
						rlwinm	$acc07,$s2,`32-16+3`,21,28
 | 
				
			||||||
	lwzx	$acc02,$Tbl0,$acc02
 | 
						lwzx	$acc00,$Tbl0,$acc00
 | 
				
			||||||
	lwzx	$acc03,$Tbl0,$acc03
 | 
						lwzx	$acc01,$Tbl0,$acc01
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8+3`,21,28
 | 
						rlwinm	$acc08,$s2,`32-8+3`,21,28
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8+3`,21,28
 | 
						rlwinm	$acc09,$s3,`32-8+3`,21,28
 | 
				
			||||||
	lwzx	$acc04,$Tbl1,$acc04
 | 
						lwzx	$acc02,$Tbl0,$acc02
 | 
				
			||||||
	lwzx	$acc05,$Tbl1,$acc05
 | 
						lwzx	$acc03,$Tbl0,$acc03
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8+3`,21,28
 | 
						rlwinm	$acc10,$s0,`32-8+3`,21,28
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8+3`,21,28
 | 
						rlwinm	$acc11,$s1,`32-8+3`,21,28
 | 
				
			||||||
	lwzx	$acc06,$Tbl1,$acc06
 | 
						lwzx	$acc04,$Tbl1,$acc04
 | 
				
			||||||
	lwzx	$acc07,$Tbl1,$acc07
 | 
						lwzx	$acc05,$Tbl1,$acc05
 | 
				
			||||||
	rlwinm	$acc12,$s1,`0+3`,21,28
 | 
						rlwinm	$acc12,$s1,`0+3`,21,28
 | 
				
			||||||
	rlwinm	$acc13,$s2,`0+3`,21,28
 | 
						rlwinm	$acc13,$s2,`0+3`,21,28
 | 
				
			||||||
	lwzx	$acc08,$Tbl2,$acc08
 | 
						lwzx	$acc06,$Tbl1,$acc06
 | 
				
			||||||
	lwzx	$acc09,$Tbl2,$acc09
 | 
						lwzx	$acc07,$Tbl1,$acc07
 | 
				
			||||||
	rlwinm	$acc14,$s3,`0+3`,21,28
 | 
						rlwinm	$acc14,$s3,`0+3`,21,28
 | 
				
			||||||
	rlwinm	$acc15,$s0,`0+3`,21,28
 | 
						rlwinm	$acc15,$s0,`0+3`,21,28
 | 
				
			||||||
	lwzx	$acc10,$Tbl2,$acc10
 | 
						lwzx	$acc08,$Tbl2,$acc08
 | 
				
			||||||
	lwzx	$acc11,$Tbl2,$acc11
 | 
						lwzx	$acc09,$Tbl2,$acc09
 | 
				
			||||||
	xor	$t0,$t0,$acc00
 | 
						xor	$t0,$t0,$acc00
 | 
				
			||||||
	xor	$t1,$t1,$acc01
 | 
						xor	$t1,$t1,$acc01
 | 
				
			||||||
	lwzx	$acc12,$Tbl3,$acc12
 | 
						lwzx	$acc10,$Tbl2,$acc10
 | 
				
			||||||
	lwzx	$acc13,$Tbl3,$acc13
 | 
						lwzx	$acc11,$Tbl2,$acc11
 | 
				
			||||||
	xor	$t2,$t2,$acc02
 | 
						xor	$t2,$t2,$acc02
 | 
				
			||||||
	xor	$t3,$t3,$acc03
 | 
						xor	$t3,$t3,$acc03
 | 
				
			||||||
	lwzx	$acc14,$Tbl3,$acc14
 | 
						lwzx	$acc12,$Tbl3,$acc12
 | 
				
			||||||
	lwzx	$acc15,$Tbl3,$acc15
 | 
						lwzx	$acc13,$Tbl3,$acc13
 | 
				
			||||||
	xor	$t0,$t0,$acc04
 | 
						xor	$t0,$t0,$acc04
 | 
				
			||||||
	xor	$t1,$t1,$acc05
 | 
						xor	$t1,$t1,$acc05
 | 
				
			||||||
 | 
						lwzx	$acc14,$Tbl3,$acc14
 | 
				
			||||||
 | 
						lwzx	$acc15,$Tbl3,$acc15
 | 
				
			||||||
	xor	$t2,$t2,$acc06
 | 
						xor	$t2,$t2,$acc06
 | 
				
			||||||
	xor	$t3,$t3,$acc07
 | 
						xor	$t3,$t3,$acc07
 | 
				
			||||||
	xor	$t0,$t0,$acc08
 | 
						xor	$t0,$t0,$acc08
 | 
				
			||||||
@@ -801,56 +814,56 @@ Ldec_loop:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	addi	$Tbl2,$Tbl0,2048
 | 
						addi	$Tbl2,$Tbl0,2048
 | 
				
			||||||
	nop
 | 
						nop
 | 
				
			||||||
	lwz	$acc08,`2048+0`($Tbl0)	! prefetch Td4
 | 
					 | 
				
			||||||
	lwz	$acc09,`2048+32`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc10,`2048+64`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc11,`2048+96`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc08,`2048+128`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc09,`2048+160`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc10,`2048+192`($Tbl0)
 | 
					 | 
				
			||||||
	lwz	$acc11,`2048+224`($Tbl0)
 | 
					 | 
				
			||||||
	rlwinm	$acc00,$s0,`32-24`,24,31
 | 
					 | 
				
			||||||
	rlwinm	$acc01,$s1,`32-24`,24,31
 | 
					 | 
				
			||||||
	lwz	$t0,0($key)
 | 
						lwz	$t0,0($key)
 | 
				
			||||||
	lwz	$t1,4($key)
 | 
						lwz	$t1,4($key)
 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24`,24,31
 | 
						rlwinm	$acc00,$s0,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24`,24,31
 | 
						rlwinm	$acc01,$s1,`32-24`,24,31
 | 
				
			||||||
	lwz	$t2,8($key)
 | 
						lwz	$t2,8($key)
 | 
				
			||||||
	lwz	$t3,12($key)
 | 
						lwz	$t3,12($key)
 | 
				
			||||||
 | 
						rlwinm	$acc02,$s2,`32-24`,24,31
 | 
				
			||||||
 | 
						rlwinm	$acc03,$s3,`32-24`,24,31
 | 
				
			||||||
 | 
						lwz	$acc08,`2048+0`($Tbl0)	! prefetch Td4
 | 
				
			||||||
 | 
						lwz	$acc09,`2048+32`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc04,$s3,`32-16`,24,31
 | 
						rlwinm	$acc04,$s3,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc05,$s0,`32-16`,24,31
 | 
						rlwinm	$acc05,$s0,`32-16`,24,31
 | 
				
			||||||
 | 
						lwz	$acc10,`2048+64`($Tbl0)
 | 
				
			||||||
 | 
						lwz	$acc11,`2048+96`($Tbl0)
 | 
				
			||||||
	lbzx	$acc00,$Tbl2,$acc00
 | 
						lbzx	$acc00,$Tbl2,$acc00
 | 
				
			||||||
	lbzx	$acc01,$Tbl2,$acc01
 | 
						lbzx	$acc01,$Tbl2,$acc01
 | 
				
			||||||
 | 
						lwz	$acc12,`2048+128`($Tbl0)
 | 
				
			||||||
 | 
						lwz	$acc13,`2048+160`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc06,$s1,`32-16`,24,31
 | 
						rlwinm	$acc06,$s1,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc07,$s2,`32-16`,24,31
 | 
						rlwinm	$acc07,$s2,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc02,$Tbl2,$acc02
 | 
						lwz	$acc14,`2048+192`($Tbl0)
 | 
				
			||||||
	lbzx	$acc03,$Tbl2,$acc03
 | 
						lwz	$acc15,`2048+224`($Tbl0)
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8`,24,31
 | 
						rlwinm	$acc08,$s2,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8`,24,31
 | 
						rlwinm	$acc09,$s3,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc04,$Tbl2,$acc04
 | 
						lbzx	$acc02,$Tbl2,$acc02
 | 
				
			||||||
	lbzx	$acc05,$Tbl2,$acc05
 | 
						lbzx	$acc03,$Tbl2,$acc03
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8`,24,31
 | 
						rlwinm	$acc10,$s0,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8`,24,31
 | 
						rlwinm	$acc11,$s1,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc06,$Tbl2,$acc06
 | 
						lbzx	$acc04,$Tbl2,$acc04
 | 
				
			||||||
	lbzx	$acc07,$Tbl2,$acc07
 | 
						lbzx	$acc05,$Tbl2,$acc05
 | 
				
			||||||
	rlwinm	$acc12,$s1,`0`,24,31
 | 
						rlwinm	$acc12,$s1,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc13,$s2,`0`,24,31
 | 
						rlwinm	$acc13,$s2,`0`,24,31
 | 
				
			||||||
	lbzx	$acc08,$Tbl2,$acc08
 | 
						lbzx	$acc06,$Tbl2,$acc06
 | 
				
			||||||
	lbzx	$acc09,$Tbl2,$acc09
 | 
						lbzx	$acc07,$Tbl2,$acc07
 | 
				
			||||||
	rlwinm	$acc14,$s3,`0`,24,31
 | 
						rlwinm	$acc14,$s3,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc15,$s0,`0`,24,31
 | 
						rlwinm	$acc15,$s0,`0`,24,31
 | 
				
			||||||
	lbzx	$acc10,$Tbl2,$acc10
 | 
						lbzx	$acc08,$Tbl2,$acc08
 | 
				
			||||||
	lbzx	$acc11,$Tbl2,$acc11
 | 
						lbzx	$acc09,$Tbl2,$acc09
 | 
				
			||||||
	rlwinm	$s0,$acc00,24,0,7
 | 
						rlwinm	$s0,$acc00,24,0,7
 | 
				
			||||||
	rlwinm	$s1,$acc01,24,0,7
 | 
						rlwinm	$s1,$acc01,24,0,7
 | 
				
			||||||
	lbzx	$acc12,$Tbl2,$acc12
 | 
						lbzx	$acc10,$Tbl2,$acc10
 | 
				
			||||||
	lbzx	$acc13,$Tbl2,$acc13
 | 
						lbzx	$acc11,$Tbl2,$acc11
 | 
				
			||||||
	rlwinm	$s2,$acc02,24,0,7
 | 
						rlwinm	$s2,$acc02,24,0,7
 | 
				
			||||||
	rlwinm	$s3,$acc03,24,0,7
 | 
						rlwinm	$s3,$acc03,24,0,7
 | 
				
			||||||
	lbzx	$acc14,$Tbl2,$acc14
 | 
						lbzx	$acc12,$Tbl2,$acc12
 | 
				
			||||||
	lbzx	$acc15,$Tbl2,$acc15
 | 
						lbzx	$acc13,$Tbl2,$acc13
 | 
				
			||||||
	rlwimi	$s0,$acc04,16,8,15
 | 
						rlwimi	$s0,$acc04,16,8,15
 | 
				
			||||||
	rlwimi	$s1,$acc05,16,8,15
 | 
						rlwimi	$s1,$acc05,16,8,15
 | 
				
			||||||
 | 
						lbzx	$acc14,$Tbl2,$acc14
 | 
				
			||||||
 | 
						lbzx	$acc15,$Tbl2,$acc15
 | 
				
			||||||
	rlwimi	$s2,$acc06,16,8,15
 | 
						rlwimi	$s2,$acc06,16,8,15
 | 
				
			||||||
	rlwimi	$s3,$acc07,16,8,15
 | 
						rlwimi	$s3,$acc07,16,8,15
 | 
				
			||||||
	rlwimi	$s0,$acc08,8,16,23
 | 
						rlwimi	$s0,$acc08,8,16,23
 | 
				
			||||||
@@ -897,40 +910,40 @@ Ldec_compact_loop:
 | 
				
			|||||||
	rlwinm	$acc01,$s1,`32-24`,24,31
 | 
						rlwinm	$acc01,$s1,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc02,$s2,`32-24`,24,31
 | 
						rlwinm	$acc02,$s2,`32-24`,24,31
 | 
				
			||||||
	rlwinm	$acc03,$s3,`32-24`,24,31
 | 
						rlwinm	$acc03,$s3,`32-24`,24,31
 | 
				
			||||||
	lbzx	$acc00,$Tbl1,$acc00
 | 
					 | 
				
			||||||
	lbzx	$acc01,$Tbl1,$acc01
 | 
					 | 
				
			||||||
	rlwinm	$acc04,$s3,`32-16`,24,31
 | 
						rlwinm	$acc04,$s3,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc05,$s0,`32-16`,24,31
 | 
						rlwinm	$acc05,$s0,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc02,$Tbl1,$acc02
 | 
					 | 
				
			||||||
	lbzx	$acc03,$Tbl1,$acc03
 | 
					 | 
				
			||||||
	rlwinm	$acc06,$s1,`32-16`,24,31
 | 
						rlwinm	$acc06,$s1,`32-16`,24,31
 | 
				
			||||||
	rlwinm	$acc07,$s2,`32-16`,24,31
 | 
						rlwinm	$acc07,$s2,`32-16`,24,31
 | 
				
			||||||
	lbzx	$acc04,$Tbl1,$acc04
 | 
						lbzx	$acc00,$Tbl1,$acc00
 | 
				
			||||||
	lbzx	$acc05,$Tbl1,$acc05
 | 
						lbzx	$acc01,$Tbl1,$acc01
 | 
				
			||||||
	rlwinm	$acc08,$s2,`32-8`,24,31
 | 
						rlwinm	$acc08,$s2,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc09,$s3,`32-8`,24,31
 | 
						rlwinm	$acc09,$s3,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc06,$Tbl1,$acc06
 | 
						lbzx	$acc02,$Tbl1,$acc02
 | 
				
			||||||
	lbzx	$acc07,$Tbl1,$acc07
 | 
						lbzx	$acc03,$Tbl1,$acc03
 | 
				
			||||||
	rlwinm	$acc10,$s0,`32-8`,24,31
 | 
						rlwinm	$acc10,$s0,`32-8`,24,31
 | 
				
			||||||
	rlwinm	$acc11,$s1,`32-8`,24,31
 | 
						rlwinm	$acc11,$s1,`32-8`,24,31
 | 
				
			||||||
	lbzx	$acc08,$Tbl1,$acc08
 | 
						lbzx	$acc04,$Tbl1,$acc04
 | 
				
			||||||
	lbzx	$acc09,$Tbl1,$acc09
 | 
						lbzx	$acc05,$Tbl1,$acc05
 | 
				
			||||||
	rlwinm	$acc12,$s1,`0`,24,31
 | 
						rlwinm	$acc12,$s1,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc13,$s2,`0`,24,31
 | 
						rlwinm	$acc13,$s2,`0`,24,31
 | 
				
			||||||
	lbzx	$acc10,$Tbl1,$acc10
 | 
						lbzx	$acc06,$Tbl1,$acc06
 | 
				
			||||||
	lbzx	$acc11,$Tbl1,$acc11
 | 
						lbzx	$acc07,$Tbl1,$acc07
 | 
				
			||||||
	rlwinm	$acc14,$s3,`0`,24,31
 | 
						rlwinm	$acc14,$s3,`0`,24,31
 | 
				
			||||||
	rlwinm	$acc15,$s0,`0`,24,31
 | 
						rlwinm	$acc15,$s0,`0`,24,31
 | 
				
			||||||
	lbzx	$acc12,$Tbl1,$acc12
 | 
						lbzx	$acc08,$Tbl1,$acc08
 | 
				
			||||||
	lbzx	$acc13,$Tbl1,$acc13
 | 
						lbzx	$acc09,$Tbl1,$acc09
 | 
				
			||||||
	rlwinm	$s0,$acc00,24,0,7
 | 
						rlwinm	$s0,$acc00,24,0,7
 | 
				
			||||||
	rlwinm	$s1,$acc01,24,0,7
 | 
						rlwinm	$s1,$acc01,24,0,7
 | 
				
			||||||
	lbzx	$acc14,$Tbl1,$acc14
 | 
						lbzx	$acc10,$Tbl1,$acc10
 | 
				
			||||||
	lbzx	$acc15,$Tbl1,$acc15
 | 
						lbzx	$acc11,$Tbl1,$acc11
 | 
				
			||||||
	rlwinm	$s2,$acc02,24,0,7
 | 
						rlwinm	$s2,$acc02,24,0,7
 | 
				
			||||||
	rlwinm	$s3,$acc03,24,0,7
 | 
						rlwinm	$s3,$acc03,24,0,7
 | 
				
			||||||
 | 
						lbzx	$acc12,$Tbl1,$acc12
 | 
				
			||||||
 | 
						lbzx	$acc13,$Tbl1,$acc13
 | 
				
			||||||
	rlwimi	$s0,$acc04,16,8,15
 | 
						rlwimi	$s0,$acc04,16,8,15
 | 
				
			||||||
	rlwimi	$s1,$acc05,16,8,15
 | 
						rlwimi	$s1,$acc05,16,8,15
 | 
				
			||||||
 | 
						lbzx	$acc14,$Tbl1,$acc14
 | 
				
			||||||
 | 
						lbzx	$acc15,$Tbl1,$acc15
 | 
				
			||||||
	rlwimi	$s2,$acc06,16,8,15
 | 
						rlwimi	$s2,$acc06,16,8,15
 | 
				
			||||||
	rlwimi	$s3,$acc07,16,8,15
 | 
						rlwimi	$s3,$acc07,16,8,15
 | 
				
			||||||
	rlwimi	$s0,$acc08,8,16,23
 | 
						rlwimi	$s0,$acc08,8,16,23
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -765,6 +765,11 @@ $code.=<<___ if (!$softonly);
 | 
				
			|||||||
	srl	%r5,6
 | 
						srl	%r5,6
 | 
				
			||||||
	ar	%r5,%r0
 | 
						ar	%r5,%r0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						larl	%r1,OPENSSL_s390xcap_P
 | 
				
			||||||
 | 
						lg	%r0,0(%r1)
 | 
				
			||||||
 | 
						tmhl	%r0,0x4000	# check for message-security assist
 | 
				
			||||||
 | 
						jz	.Lekey_internal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lghi	%r0,0		# query capability vector
 | 
						lghi	%r0,0		# query capability vector
 | 
				
			||||||
	la	%r1,16($sp)
 | 
						la	%r1,16($sp)
 | 
				
			||||||
	.long	0xb92f0042	# kmc %r4,%r2
 | 
						.long	0xb92f0042	# kmc %r4,%r2
 | 
				
			||||||
@@ -1323,6 +1328,7 @@ $code.=<<___;
 | 
				
			|||||||
4:	ex	$len,0($s1)
 | 
					4:	ex	$len,0($s1)
 | 
				
			||||||
	j	.Lcbc_dec_exit
 | 
						j	.Lcbc_dec_exit
 | 
				
			||||||
.size	AES_cbc_encrypt,.-AES_cbc_encrypt
 | 
					.size	AES_cbc_encrypt,.-AES_cbc_encrypt
 | 
				
			||||||
 | 
					.comm  OPENSSL_s390xcap_P,8,8
 | 
				
			||||||
___
 | 
					___
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
$code.=<<___;
 | 
					$code.=<<___;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env perl
 | 
				
			||||||
 | 
					print <<'___';
 | 
				
			||||||
.text
 | 
					.text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.set	noat
 | 
					.set	noat
 | 
				
			||||||
@@ -68,9 +70,9 @@ OPENSSL_wipe_cpu:
 | 
				
			|||||||
OPENSSL_atomic_add:
 | 
					OPENSSL_atomic_add:
 | 
				
			||||||
	.frame	$30,0,$26
 | 
						.frame	$30,0,$26
 | 
				
			||||||
	.prologue 0
 | 
						.prologue 0
 | 
				
			||||||
1:	ldl_l	$0,($16)
 | 
					1:	ldl_l	$0,0($16)
 | 
				
			||||||
	addl	$0,$17,$1
 | 
						addl	$0,$17,$1
 | 
				
			||||||
	stl_c	$1,($16)
 | 
						stl_c	$1,0($16)
 | 
				
			||||||
	beq	$1,1b
 | 
						beq	$1,1b
 | 
				
			||||||
	addl	$0,$17,$0
 | 
						addl	$0,$17,$0
 | 
				
			||||||
	ret	($26)
 | 
						ret	($26)
 | 
				
			||||||
@@ -90,25 +92,26 @@ OPENSSL_rdtsc:
 | 
				
			|||||||
OPENSSL_cleanse:
 | 
					OPENSSL_cleanse:
 | 
				
			||||||
	.frame	$30,0,$26
 | 
						.frame	$30,0,$26
 | 
				
			||||||
	.prologue 0
 | 
						.prologue 0
 | 
				
			||||||
 | 
						beq	$17,.Ldone
 | 
				
			||||||
	and	$16,7,$0
 | 
						and	$16,7,$0
 | 
				
			||||||
	bic	$17,7,$at
 | 
						bic	$17,7,$at
 | 
				
			||||||
	beq	$at,.Little
 | 
						beq	$at,.Little
 | 
				
			||||||
	beq	$0,.Laligned
 | 
						beq	$0,.Laligned
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Little:
 | 
					.Little:
 | 
				
			||||||
 | 
						subq	$0,8,$0
 | 
				
			||||||
	ldq_u	$1,0($16)
 | 
						ldq_u	$1,0($16)
 | 
				
			||||||
	mov	$16,$2
 | 
						mov	$16,$2
 | 
				
			||||||
.Lalign:
 | 
					.Lalign:
 | 
				
			||||||
	mskbl	$1,$16,$1
 | 
						mskbl	$1,$16,$1
 | 
				
			||||||
	lda	$16,1($16)
 | 
						lda	$16,1($16)
 | 
				
			||||||
	subq	$17,1,$17
 | 
						subq	$17,1,$17
 | 
				
			||||||
	subq	$0,1,$0
 | 
						addq	$0,1,$0
 | 
				
			||||||
	beq	$17,.Lout
 | 
						beq	$17,.Lout
 | 
				
			||||||
	bne	$0,.Lalign
 | 
						bne	$0,.Lalign
 | 
				
			||||||
.Lout:	stq_u	$1,0($2)
 | 
					.Lout:	stq_u	$1,0($2)
 | 
				
			||||||
	beq	$17,.Ldone
 | 
						beq	$17,.Ldone
 | 
				
			||||||
	bic	$17,7,$at
 | 
						bic	$17,7,$at
 | 
				
			||||||
	mov	$17,$0
 | 
					 | 
				
			||||||
	beq	$at,.Little
 | 
						beq	$at,.Little
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Laligned:
 | 
					.Laligned:
 | 
				
			||||||
@@ -117,8 +120,7 @@ OPENSSL_cleanse:
 | 
				
			|||||||
	lda	$16,8($16)
 | 
						lda	$16,8($16)
 | 
				
			||||||
	bic	$17,7,$at
 | 
						bic	$17,7,$at
 | 
				
			||||||
	bne	$at,.Laligned
 | 
						bne	$at,.Laligned
 | 
				
			||||||
	beq	$17,.Ldone
 | 
						bne	$17,.Little
 | 
				
			||||||
	mov	$17,$0
 | 
					 | 
				
			||||||
	br	.Little
 | 
					 | 
				
			||||||
.Ldone: ret	($26)
 | 
					.Ldone: ret	($26)
 | 
				
			||||||
.end	OPENSSL_cleanse
 | 
					.end	OPENSSL_cleanse
 | 
				
			||||||
 | 
					___
 | 
				
			||||||
@@ -62,7 +62,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifndef NO_OLD_ASN1
 | 
					#ifndef NO_OLD_ASN1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x)
 | 
					void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	unsigned char *b,*p;
 | 
						unsigned char *b,*p;
 | 
				
			||||||
	const unsigned char *p2;
 | 
						const unsigned char *p2;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -243,7 +243,7 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
 | 
				
			|||||||
		p=OPENSSL_malloc(len);
 | 
							p=OPENSSL_malloc(len);
 | 
				
			||||||
		if (p == NULL)
 | 
							if (p == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_SET,
 | 
								ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ,
 | 
				
			||||||
				ERR_R_MALLOC_FAILURE);
 | 
									ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
			return(NULL);
 | 
								return(NULL);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -273,7 +273,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	ASN1_INTEGER *ret=NULL;
 | 
						ASN1_INTEGER *ret=NULL;
 | 
				
			||||||
	const unsigned char *p;
 | 
						const unsigned char *p;
 | 
				
			||||||
	unsigned char *to,*s;
 | 
						unsigned char *s;
 | 
				
			||||||
	long len;
 | 
						long len;
 | 
				
			||||||
	int inf,tag,xclass;
 | 
						int inf,tag,xclass;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
@@ -308,7 +308,6 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
 | 
				
			|||||||
		i=ERR_R_MALLOC_FAILURE;
 | 
							i=ERR_R_MALLOC_FAILURE;
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	to=s;
 | 
					 | 
				
			||||||
	ret->type=V_ASN1_INTEGER;
 | 
						ret->type=V_ASN1_INTEGER;
 | 
				
			||||||
	if(len) {
 | 
						if(len) {
 | 
				
			||||||
		if ((*p == 0) && (len != 1))
 | 
							if ((*p == 0) && (len != 1))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,7 +93,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
 | 
				
			|||||||
	int str_type;
 | 
						int str_type;
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
	char free_out;
 | 
						char free_out;
 | 
				
			||||||
	int outform, outlen;
 | 
						int outform, outlen = 0;
 | 
				
			||||||
	ASN1_STRING *dest;
 | 
						ASN1_STRING *dest;
 | 
				
			||||||
	unsigned char *p;
 | 
						unsigned char *p;
 | 
				
			||||||
	int nchar;
 | 
						int nchar;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -139,7 +139,7 @@ int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
 | 
				
			|||||||
				ASN1err(ASN1_F_A2D_ASN1_OBJECT,ASN1_R_INVALID_DIGIT);
 | 
									ASN1err(ASN1_F_A2D_ASN1_OBJECT,ASN1_R_INVALID_DIGIT);
 | 
				
			||||||
				goto err;
 | 
									goto err;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			if (!use_bn && l > (ULONG_MAX / 10L))
 | 
								if (!use_bn && l >= ((ULONG_MAX - 80) / 10L))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				use_bn = 1;
 | 
									use_bn = 1;
 | 
				
			||||||
				if (!bl)
 | 
									if (!bl)
 | 
				
			||||||
@@ -290,6 +290,17 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
 | 
				
			|||||||
	const unsigned char *p;
 | 
						const unsigned char *p;
 | 
				
			||||||
	unsigned char *data;
 | 
						unsigned char *data;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
						/* Sanity check OID encoding: can't have leading 0x80 in
 | 
				
			||||||
 | 
						 * subidentifiers, see: X.690 8.19.2
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						for (i = 0, p = *pp; i < len; i++, p++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							if (*p == 0x80 && (!i || !(p[-1] & 0x80)))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								ASN1err(ASN1_F_C2I_ASN1_OBJECT,ASN1_R_INVALID_OBJECT_ENCODING);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* only the ASN1_OBJECTs from the 'table' will have values
 | 
						/* only the ASN1_OBJECTs from the 'table' will have values
 | 
				
			||||||
	 * for ->sn or ->ln */
 | 
						 * for ->sn or ->ln */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,7 +85,7 @@ static int SetBlobCmp(const void *elem1, const void *elem2 )
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* int is_set:  if TRUE, then sort the contents (i.e. it isn't a SEQUENCE)    */
 | 
					/* int is_set:  if TRUE, then sort the contents (i.e. it isn't a SEQUENCE)    */
 | 
				
			||||||
int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
 | 
					int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
 | 
				
			||||||
		 i2d_of_void *i2d, int ex_tag, int ex_class,
 | 
							 i2d_of_void *i2d, int ex_tag, int ex_class,
 | 
				
			||||||
		 int is_set)
 | 
							 int is_set)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -97,8 +97,8 @@ int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
 | 
				
			|||||||
        int totSize;
 | 
					        int totSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (a == NULL) return(0);
 | 
						if (a == NULL) return(0);
 | 
				
			||||||
	for (i=sk_BLOCK_num(a)-1; i>=0; i--)
 | 
						for (i=sk_OPENSSL_BLOCK_num(a)-1; i>=0; i--)
 | 
				
			||||||
		ret+=i2d(sk_BLOCK_value(a,i),NULL);
 | 
							ret+=i2d(sk_OPENSSL_BLOCK_value(a,i),NULL);
 | 
				
			||||||
	r=ASN1_object_size(1,ret,ex_tag);
 | 
						r=ASN1_object_size(1,ret,ex_tag);
 | 
				
			||||||
	if (pp == NULL) return(r);
 | 
						if (pp == NULL) return(r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -109,10 +109,10 @@ int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
 | 
				
			|||||||
	/* And then again by Ben */
 | 
						/* And then again by Ben */
 | 
				
			||||||
	/* And again by Steve */
 | 
						/* And again by Steve */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!is_set || (sk_BLOCK_num(a) < 2))
 | 
						if(!is_set || (sk_OPENSSL_BLOCK_num(a) < 2))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		for (i=0; i<sk_BLOCK_num(a); i++)
 | 
							for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
 | 
				
			||||||
                	i2d(sk_BLOCK_value(a,i),&p);
 | 
					                	i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		*pp=p;
 | 
							*pp=p;
 | 
				
			||||||
		return(r);
 | 
							return(r);
 | 
				
			||||||
@@ -120,17 +120,17 @@ int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        pStart  = p; /* Catch the beg of Setblobs*/
 | 
					        pStart  = p; /* Catch the beg of Setblobs*/
 | 
				
			||||||
		/* In this array we will store the SET blobs */
 | 
							/* In this array we will store the SET blobs */
 | 
				
			||||||
		rgSetBlob = OPENSSL_malloc(sk_BLOCK_num(a) * sizeof(MYBLOB));
 | 
							rgSetBlob = OPENSSL_malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB));
 | 
				
			||||||
		if (rgSetBlob == NULL)
 | 
							if (rgSetBlob == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
								ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
			return(0);
 | 
								return(0);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (i=0; i<sk_BLOCK_num(a); i++)
 | 
					        for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
 | 
				
			||||||
	        {
 | 
						        {
 | 
				
			||||||
                rgSetBlob[i].pbData = p;  /* catch each set encode blob */
 | 
					                rgSetBlob[i].pbData = p;  /* catch each set encode blob */
 | 
				
			||||||
                i2d(sk_BLOCK_value(a,i),&p);
 | 
					                i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
 | 
				
			||||||
                rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
 | 
					                rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
 | 
				
			||||||
SetBlob
 | 
					SetBlob
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
@@ -140,7 +140,7 @@ SetBlob
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 /* Now we have to sort the blobs. I am using a simple algo.
 | 
					 /* Now we have to sort the blobs. I am using a simple algo.
 | 
				
			||||||
    *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
 | 
					    *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
 | 
				
			||||||
        qsort( rgSetBlob, sk_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
 | 
					        qsort( rgSetBlob, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
 | 
				
			||||||
		if (!(pTempMem = OPENSSL_malloc(totSize)))
 | 
							if (!(pTempMem = OPENSSL_malloc(totSize)))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
								ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
@@ -149,7 +149,7 @@ SetBlob
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Copy to temp mem */
 | 
					/* Copy to temp mem */
 | 
				
			||||||
        p = pTempMem;
 | 
					        p = pTempMem;
 | 
				
			||||||
        for(i=0; i<sk_BLOCK_num(a); ++i)
 | 
					        for(i=0; i<sk_OPENSSL_BLOCK_num(a); ++i)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
                memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
 | 
					                memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
 | 
				
			||||||
                p += rgSetBlob[i].cbData;
 | 
					                p += rgSetBlob[i].cbData;
 | 
				
			||||||
@@ -163,17 +163,18 @@ SetBlob
 | 
				
			|||||||
        return(r);
 | 
					        return(r);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STACK_OF(BLOCK) *d2i_ASN1_SET(STACK_OF(BLOCK) **a, const unsigned char **pp,
 | 
					STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
 | 
				
			||||||
 | 
								      const unsigned char **pp,
 | 
				
			||||||
			      long length, d2i_of_void *d2i,
 | 
								      long length, d2i_of_void *d2i,
 | 
				
			||||||
			      void (*free_func)(BLOCK), int ex_tag,
 | 
								      void (*free_func)(OPENSSL_BLOCK), int ex_tag,
 | 
				
			||||||
			      int ex_class)
 | 
								      int ex_class)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	ASN1_const_CTX c;
 | 
						ASN1_const_CTX c;
 | 
				
			||||||
	STACK_OF(BLOCK) *ret=NULL;
 | 
						STACK_OF(OPENSSL_BLOCK) *ret=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((a == NULL) || ((*a) == NULL))
 | 
						if ((a == NULL) || ((*a) == NULL))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if ((ret=sk_BLOCK_new_null()) == NULL)
 | 
							if ((ret=sk_OPENSSL_BLOCK_new_null()) == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
								ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
@@ -221,7 +222,7 @@ STACK_OF(BLOCK) *d2i_ASN1_SET(STACK_OF(BLOCK) **a, const unsigned char **pp,
 | 
				
			|||||||
			asn1_add_error(*pp,(int)(c.p- *pp));
 | 
								asn1_add_error(*pp,(int)(c.p- *pp));
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (!sk_BLOCK_push(ret,s)) goto err;
 | 
							if (!sk_OPENSSL_BLOCK_push(ret,s)) goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (a != NULL) (*a)=ret;
 | 
						if (a != NULL) (*a)=ret;
 | 
				
			||||||
	*pp=c.p;
 | 
						*pp=c.p;
 | 
				
			||||||
@@ -230,9 +231,9 @@ err:
 | 
				
			|||||||
	if ((ret != NULL) && ((a == NULL) || (*a != ret)))
 | 
						if ((ret != NULL) && ((a == NULL) || (*a != ret)))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (free_func != NULL)
 | 
							if (free_func != NULL)
 | 
				
			||||||
			sk_BLOCK_pop_free(ret,free_func);
 | 
								sk_OPENSSL_BLOCK_pop_free(ret,free_func);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			sk_BLOCK_free(ret);
 | 
								sk_OPENSSL_BLOCK_free(ret);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	return(NULL);
 | 
						return(NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,6 +74,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define CHARTYPE_BS_ESC		(ASN1_STRFLGS_ESC_2253 | CHARTYPE_FIRST_ESC_2253 | CHARTYPE_LAST_ESC_2253)
 | 
					#define CHARTYPE_BS_ESC		(ASN1_STRFLGS_ESC_2253 | CHARTYPE_FIRST_ESC_2253 | CHARTYPE_LAST_ESC_2253)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
 | 
				
			||||||
 | 
							  ASN1_STRFLGS_ESC_QUOTE | \
 | 
				
			||||||
 | 
							  ASN1_STRFLGS_ESC_CTRL | \
 | 
				
			||||||
 | 
							  ASN1_STRFLGS_ESC_MSB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Three IO functions for sending data to memory, a BIO and
 | 
					/* Three IO functions for sending data to memory, a BIO and
 | 
				
			||||||
 * and a FILE pointer.
 | 
					 * and a FILE pointer.
 | 
				
			||||||
@@ -148,6 +153,13 @@ static int do_esc_char(unsigned long c, unsigned char flags, char *do_quotes, ch
 | 
				
			|||||||
		if(!io_ch(arg, tmphex, 3)) return -1;
 | 
							if(!io_ch(arg, tmphex, 3)) return -1;
 | 
				
			||||||
		return 3;
 | 
							return 3;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						/* If we get this far and do any escaping at all must escape 
 | 
				
			||||||
 | 
						 * the escape character itself: backslash.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						if (chtmp == '\\' && flags & ESC_FLAGS) {
 | 
				
			||||||
 | 
							if(!io_ch(arg, "\\\\", 2)) return -1;
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if(!io_ch(arg, &chtmp, 1)) return -1;
 | 
						if(!io_ch(arg, &chtmp, 1)) return -1;
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -292,11 +304,6 @@ static const signed char tag2nbyte[] = {
 | 
				
			|||||||
	4, -1, 2		/* 28-30 */
 | 
						4, -1, 2		/* 28-30 */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
 | 
					 | 
				
			||||||
		  ASN1_STRFLGS_ESC_QUOTE | \
 | 
					 | 
				
			||||||
		  ASN1_STRFLGS_ESC_CTRL | \
 | 
					 | 
				
			||||||
		  ASN1_STRFLGS_ESC_MSB)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* This is the main function, print out an
 | 
					/* This is the main function, print out an
 | 
				
			||||||
 * ASN1_STRING taking note of various escape
 | 
					 * ASN1_STRING taking note of various escape
 | 
				
			||||||
 * and display options. Returns number of
 | 
					 * and display options. Returns number of
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,7 +95,7 @@ unsigned long ASN1_STRING_get_default_mask(void)
 | 
				
			|||||||
 * default:   the default value, Printable, T61, BMP.
 | 
					 * default:   the default value, Printable, T61, BMP.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ASN1_STRING_set_default_mask_asc(char *p)
 | 
					int ASN1_STRING_set_default_mask_asc(const char *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned long mask;
 | 
						unsigned long mask;
 | 
				
			||||||
	char *end;
 | 
						char *end;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,7 +112,7 @@ ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
 | 
				
			|||||||
	ts=OPENSSL_gmtime(&t,&data);
 | 
						ts=OPENSSL_gmtime(&t,&data);
 | 
				
			||||||
	if (ts == NULL)
 | 
						if (ts == NULL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		ASN1err(ASN1_F_ASN1_TIME_SET, ASN1_R_ERROR_GETTING_TIME);
 | 
							ASN1err(ASN1_F_ASN1_TIME_ADJ, ASN1_R_ERROR_GETTING_TIME);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (offset_day || offset_sec)
 | 
						if (offset_day || offset_sec)
 | 
				
			||||||
@@ -180,6 +180,7 @@ int ASN1_TIME_set_string(ASN1_TIME *s, const char *str)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	t.length = strlen(str);
 | 
						t.length = strlen(str);
 | 
				
			||||||
	t.data = (unsigned char *)str;
 | 
						t.data = (unsigned char *)str;
 | 
				
			||||||
 | 
						t.flags = 0;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	t.type = V_ASN1_UTCTIME;
 | 
						t.type = V_ASN1_UTCTIME;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -221,7 +221,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
 | 
				
			|||||||
		p=OPENSSL_malloc(len);
 | 
							p=OPENSSL_malloc(len);
 | 
				
			||||||
		if (p == NULL)
 | 
							if (p == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			ASN1err(ASN1_F_ASN1_UTCTIME_SET,ERR_R_MALLOC_FAILURE);
 | 
								ASN1err(ASN1_F_ASN1_UTCTIME_ADJ,ERR_R_MALLOC_FAILURE);
 | 
				
			||||||
			return(NULL);
 | 
								return(NULL);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (s->data != NULL)
 | 
							if (s->data != NULL)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -172,7 +172,6 @@ static const EVP_PKEY_ASN1_METHOD *pkey_asn1_find(int type)
 | 
				
			|||||||
const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type)
 | 
					const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	const EVP_PKEY_ASN1_METHOD *t;
 | 
						const EVP_PKEY_ASN1_METHOD *t;
 | 
				
			||||||
	ENGINE *e;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (;;)
 | 
						for (;;)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -184,6 +183,7 @@ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type)
 | 
				
			|||||||
	if (pe)
 | 
						if (pe)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
 | 
							ENGINE *e;
 | 
				
			||||||
		/* type will contain the final unaliased type */
 | 
							/* type will contain the final unaliased type */
 | 
				
			||||||
		e = ENGINE_get_pkey_asn1_meth_engine(type);
 | 
							e = ENGINE_get_pkey_asn1_meth_engine(type);
 | 
				
			||||||
		if (e)
 | 
							if (e)
 | 
				
			||||||
@@ -301,6 +301,8 @@ EVP_PKEY_ASN1_METHOD* EVP_PKEY_asn1_new(int id, int flags,
 | 
				
			|||||||
		if (!ameth->info)
 | 
							if (!ameth->info)
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							ameth->info = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pem_str)
 | 
						if (pem_str)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -308,6 +310,8 @@ EVP_PKEY_ASN1_METHOD* EVP_PKEY_asn1_new(int id, int flags,
 | 
				
			|||||||
		if (!ameth->pem_str)
 | 
							if (!ameth->pem_str)
 | 
				
			||||||
			goto err;
 | 
								goto err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							ameth->pem_str = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ameth->pub_decode = 0;
 | 
						ameth->pub_decode = 0;
 | 
				
			||||||
	ameth->pub_encode = 0;
 | 
						ameth->pub_encode = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -230,6 +230,10 @@ typedef struct asn1_object_st
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_STRING_FLAG_CONT 0x020 
 | 
					#define ASN1_STRING_FLAG_CONT 0x020 
 | 
				
			||||||
 | 
					/* This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
 | 
				
			||||||
 | 
					 * type.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define ASN1_STRING_FLAG_MSTRING 0x040 
 | 
				
			||||||
/* This is the base type that holds just about everything :-) */
 | 
					/* This is the base type that holds just about everything :-) */
 | 
				
			||||||
typedef struct asn1_string_st
 | 
					typedef struct asn1_string_st
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -887,12 +891,13 @@ int ASN1_TIME_check(ASN1_TIME *t);
 | 
				
			|||||||
ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
 | 
					ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
 | 
				
			||||||
int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
 | 
					int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
 | 
					int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
 | 
				
			||||||
		 i2d_of_void *i2d, int ex_tag, int ex_class,
 | 
							 i2d_of_void *i2d, int ex_tag, int ex_class,
 | 
				
			||||||
		 int is_set);
 | 
							 int is_set);
 | 
				
			||||||
STACK_OF(BLOCK) *d2i_ASN1_SET(STACK_OF(BLOCK) **a, const unsigned char **pp,
 | 
					STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
 | 
				
			||||||
 | 
								      const unsigned char **pp,
 | 
				
			||||||
			      long length, d2i_of_void *d2i,
 | 
								      long length, d2i_of_void *d2i,
 | 
				
			||||||
			      void (*free_func)(BLOCK), int ex_tag,
 | 
								      void (*free_func)(OPENSSL_BLOCK), int ex_tag,
 | 
				
			||||||
			      int ex_class);
 | 
								      int ex_class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_NO_BIO
 | 
					#ifndef OPENSSL_NO_BIO
 | 
				
			||||||
@@ -947,7 +952,7 @@ int ASN1_put_eoc(unsigned char **pp);
 | 
				
			|||||||
int ASN1_object_size(int constructed, int length, int tag);
 | 
					int ASN1_object_size(int constructed, int length, int tag);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Used to implement other functions */
 | 
					/* Used to implement other functions */
 | 
				
			||||||
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
 | 
					void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ASN1_dup_of(type,i2d,d2i,x) \
 | 
					#define ASN1_dup_of(type,i2d,d2i,x) \
 | 
				
			||||||
    ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
 | 
					    ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
 | 
				
			||||||
@@ -1045,9 +1050,9 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
 | 
				
			|||||||
int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
 | 
					int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
 | 
				
			||||||
	unsigned char *data, int max_len);
 | 
						unsigned char *data, int max_len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STACK_OF(BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
 | 
					STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
 | 
				
			||||||
				 d2i_of_void *d2i, void (*free_func)(BLOCK));
 | 
									 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK));
 | 
				
			||||||
unsigned char *ASN1_seq_pack(STACK_OF(BLOCK) *safes, i2d_of_void *i2d,
 | 
					unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
 | 
				
			||||||
			     unsigned char **buf, int *len );
 | 
								     unsigned char **buf, int *len );
 | 
				
			||||||
void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
 | 
					void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
 | 
				
			||||||
void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
 | 
					void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
 | 
				
			||||||
@@ -1062,7 +1067,7 @@ ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
 | 
				
			|||||||
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
 | 
					ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ASN1_STRING_set_default_mask(unsigned long mask);
 | 
					void ASN1_STRING_set_default_mask(unsigned long mask);
 | 
				
			||||||
int ASN1_STRING_set_default_mask_asc(char *p);
 | 
					int ASN1_STRING_set_default_mask_asc(const char *p);
 | 
				
			||||||
unsigned long ASN1_STRING_get_default_mask(void);
 | 
					unsigned long ASN1_STRING_get_default_mask(void);
 | 
				
			||||||
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
 | 
					int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
 | 
				
			||||||
					int inform, unsigned long mask);
 | 
										int inform, unsigned long mask);
 | 
				
			||||||
@@ -1172,6 +1177,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_F_ASN1_ENUMERATED_TO_BN			 113
 | 
					#define ASN1_F_ASN1_ENUMERATED_TO_BN			 113
 | 
				
			||||||
#define ASN1_F_ASN1_EX_C2I				 204
 | 
					#define ASN1_F_ASN1_EX_C2I				 204
 | 
				
			||||||
#define ASN1_F_ASN1_FIND_END				 190
 | 
					#define ASN1_F_ASN1_FIND_END				 190
 | 
				
			||||||
 | 
					#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ			 216
 | 
				
			||||||
#define ASN1_F_ASN1_GENERALIZEDTIME_SET			 185
 | 
					#define ASN1_F_ASN1_GENERALIZEDTIME_SET			 185
 | 
				
			||||||
#define ASN1_F_ASN1_GENERATE_V3				 178
 | 
					#define ASN1_F_ASN1_GENERATE_V3				 178
 | 
				
			||||||
#define ASN1_F_ASN1_GET_OBJECT				 114
 | 
					#define ASN1_F_ASN1_GET_OBJECT				 114
 | 
				
			||||||
@@ -1206,10 +1212,12 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_F_ASN1_TEMPLATE_EX_D2I			 132
 | 
					#define ASN1_F_ASN1_TEMPLATE_EX_D2I			 132
 | 
				
			||||||
#define ASN1_F_ASN1_TEMPLATE_NEW			 133
 | 
					#define ASN1_F_ASN1_TEMPLATE_NEW			 133
 | 
				
			||||||
#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I			 131
 | 
					#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I			 131
 | 
				
			||||||
 | 
					#define ASN1_F_ASN1_TIME_ADJ				 217
 | 
				
			||||||
#define ASN1_F_ASN1_TIME_SET				 175
 | 
					#define ASN1_F_ASN1_TIME_SET				 175
 | 
				
			||||||
#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING		 134
 | 
					#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING		 134
 | 
				
			||||||
#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING		 135
 | 
					#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING		 135
 | 
				
			||||||
#define ASN1_F_ASN1_UNPACK_STRING			 136
 | 
					#define ASN1_F_ASN1_UNPACK_STRING			 136
 | 
				
			||||||
 | 
					#define ASN1_F_ASN1_UTCTIME_ADJ				 218
 | 
				
			||||||
#define ASN1_F_ASN1_UTCTIME_SET				 187
 | 
					#define ASN1_F_ASN1_UTCTIME_SET				 187
 | 
				
			||||||
#define ASN1_F_ASN1_VERIFY				 137
 | 
					#define ASN1_F_ASN1_VERIFY				 137
 | 
				
			||||||
#define ASN1_F_B64_READ_ASN1				 209
 | 
					#define ASN1_F_B64_READ_ASN1				 209
 | 
				
			||||||
@@ -1278,7 +1286,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_BAD_OBJECT_HEADER			 102
 | 
					#define ASN1_R_BAD_OBJECT_HEADER			 102
 | 
				
			||||||
#define ASN1_R_BAD_PASSWORD_READ			 103
 | 
					#define ASN1_R_BAD_PASSWORD_READ			 103
 | 
				
			||||||
#define ASN1_R_BAD_TAG					 104
 | 
					#define ASN1_R_BAD_TAG					 104
 | 
				
			||||||
#define ASN1_R_BMPSTRING_IS_WRONG_LENGTH		 210
 | 
					#define ASN1_R_BMPSTRING_IS_WRONG_LENGTH		 214
 | 
				
			||||||
#define ASN1_R_BN_LIB					 105
 | 
					#define ASN1_R_BN_LIB					 105
 | 
				
			||||||
#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH			 106
 | 
					#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH			 106
 | 
				
			||||||
#define ASN1_R_BUFFER_TOO_SMALL				 107
 | 
					#define ASN1_R_BUFFER_TOO_SMALL				 107
 | 
				
			||||||
@@ -1324,6 +1332,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_INVALID_MIME_TYPE			 205
 | 
					#define ASN1_R_INVALID_MIME_TYPE			 205
 | 
				
			||||||
#define ASN1_R_INVALID_MODIFIER				 186
 | 
					#define ASN1_R_INVALID_MODIFIER				 186
 | 
				
			||||||
#define ASN1_R_INVALID_NUMBER				 187
 | 
					#define ASN1_R_INVALID_NUMBER				 187
 | 
				
			||||||
 | 
					#define ASN1_R_INVALID_OBJECT_ENCODING			 216
 | 
				
			||||||
#define ASN1_R_INVALID_SEPARATOR			 131
 | 
					#define ASN1_R_INVALID_SEPARATOR			 131
 | 
				
			||||||
#define ASN1_R_INVALID_TIME_FORMAT			 132
 | 
					#define ASN1_R_INVALID_TIME_FORMAT			 132
 | 
				
			||||||
#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH		 133
 | 
					#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH		 133
 | 
				
			||||||
@@ -1370,7 +1379,7 @@ void ERR_load_ASN1_strings(void);
 | 
				
			|||||||
#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY			 157
 | 
					#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY			 157
 | 
				
			||||||
#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY		 158
 | 
					#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY		 158
 | 
				
			||||||
#define ASN1_R_UNEXPECTED_EOC				 159
 | 
					#define ASN1_R_UNEXPECTED_EOC				 159
 | 
				
			||||||
#define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH		 211
 | 
					#define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH		 215
 | 
				
			||||||
#define ASN1_R_UNKNOWN_FORMAT				 160
 | 
					#define ASN1_R_UNKNOWN_FORMAT				 160
 | 
				
			||||||
#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM		 161
 | 
					#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM		 161
 | 
				
			||||||
#define ASN1_R_UNKNOWN_OBJECT_TYPE			 162
 | 
					#define ASN1_R_UNKNOWN_OBJECT_TYPE			 162
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
/* crypto/asn1/asn1_err.c */
 | 
					/* crypto/asn1/asn1_err.c */
 | 
				
			||||||
/* ====================================================================
 | 
					/* ====================================================================
 | 
				
			||||||
 * Copyright (c) 1999-2007 The OpenSSL Project.  All rights reserved.
 | 
					 * Copyright (c) 1999-2009 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
 | 
				
			||||||
@@ -90,6 +90,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_TO_BN),	"ASN1_ENUMERATED_to_BN"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_TO_BN),	"ASN1_ENUMERATED_to_BN"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_EX_C2I),	"ASN1_EX_C2I"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_EX_C2I),	"ASN1_EX_C2I"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_FIND_END),	"ASN1_FIND_END"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_FIND_END),	"ASN1_FIND_END"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_ADJ),	"ASN1_GENERALIZEDTIME_adj"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_SET),	"ASN1_GENERALIZEDTIME_set"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_SET),	"ASN1_GENERALIZEDTIME_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_GENERATE_V3),	"ASN1_generate_v3"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_GENERATE_V3),	"ASN1_generate_v3"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_GET_OBJECT),	"ASN1_get_object"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_GET_OBJECT),	"ASN1_get_object"},
 | 
				
			||||||
@@ -124,10 +125,12 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_EX_D2I),	"ASN1_TEMPLATE_EX_D2I"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_EX_D2I),	"ASN1_TEMPLATE_EX_D2I"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NEW),	"ASN1_TEMPLATE_NEW"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NEW),	"ASN1_TEMPLATE_NEW"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I),	"ASN1_TEMPLATE_NOEXP_D2I"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I),	"ASN1_TEMPLATE_NOEXP_D2I"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_ASN1_TIME_ADJ),	"ASN1_TIME_adj"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_TIME_SET),	"ASN1_TIME_set"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TIME_SET),	"ASN1_TIME_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING),	"ASN1_TYPE_get_int_octetstring"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING),	"ASN1_TYPE_get_int_octetstring"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_OCTETSTRING),	"ASN1_TYPE_get_octetstring"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_OCTETSTRING),	"ASN1_TYPE_get_octetstring"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING),	"ASN1_unpack_string"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING),	"ASN1_unpack_string"},
 | 
				
			||||||
 | 
					{ERR_FUNC(ASN1_F_ASN1_UTCTIME_ADJ),	"ASN1_UTCTIME_adj"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET),	"ASN1_UTCTIME_set"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET),	"ASN1_UTCTIME_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_ASN1_VERIFY),	"ASN1_verify"},
 | 
					{ERR_FUNC(ASN1_F_ASN1_VERIFY),	"ASN1_verify"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_B64_READ_ASN1),	"B64_READ_ASN1"},
 | 
					{ERR_FUNC(ASN1_F_B64_READ_ASN1),	"B64_READ_ASN1"},
 | 
				
			||||||
@@ -176,7 +179,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 | 
				
			|||||||
{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET_IV),	"PKCS5_pbe2_set_iv"},
 | 
					{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET_IV),	"PKCS5_pbe2_set_iv"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_PKCS5_PBE_SET),	"PKCS5_pbe_set"},
 | 
					{ERR_FUNC(ASN1_F_PKCS5_PBE_SET),	"PKCS5_pbe_set"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_PKCS5_PBE_SET0_ALGOR),	"PKCS5_pbe_set0_algor"},
 | 
					{ERR_FUNC(ASN1_F_PKCS5_PBE_SET0_ALGOR),	"PKCS5_pbe_set0_algor"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_SMIME_READ_ASN1),	"SMIME_read_asn1"},
 | 
					{ERR_FUNC(ASN1_F_SMIME_READ_ASN1),	"SMIME_read_ASN1"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_SMIME_TEXT),	"SMIME_text"},
 | 
					{ERR_FUNC(ASN1_F_SMIME_TEXT),	"SMIME_text"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_X509_CINF_NEW),	"X509_CINF_NEW"},
 | 
					{ERR_FUNC(ASN1_F_X509_CINF_NEW),	"X509_CINF_NEW"},
 | 
				
			||||||
{ERR_FUNC(ASN1_F_X509_CRL_ADD0_REVOKED),	"X509_CRL_add0_revoked"},
 | 
					{ERR_FUNC(ASN1_F_X509_CRL_ADD0_REVOKED),	"X509_CRL_add0_revoked"},
 | 
				
			||||||
@@ -245,6 +248,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 | 
				
			|||||||
{ERR_REASON(ASN1_R_INVALID_MIME_TYPE)    ,"invalid mime type"},
 | 
					{ERR_REASON(ASN1_R_INVALID_MIME_TYPE)    ,"invalid mime type"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_MODIFIER)     ,"invalid modifier"},
 | 
					{ERR_REASON(ASN1_R_INVALID_MODIFIER)     ,"invalid modifier"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_NUMBER)       ,"invalid number"},
 | 
					{ERR_REASON(ASN1_R_INVALID_NUMBER)       ,"invalid number"},
 | 
				
			||||||
 | 
					{ERR_REASON(ASN1_R_INVALID_OBJECT_ENCODING),"invalid object encoding"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_SEPARATOR)    ,"invalid separator"},
 | 
					{ERR_REASON(ASN1_R_INVALID_SEPARATOR)    ,"invalid separator"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_TIME_FORMAT)  ,"invalid time format"},
 | 
					{ERR_REASON(ASN1_R_INVALID_TIME_FORMAT)  ,"invalid time format"},
 | 
				
			||||||
{ERR_REASON(ASN1_R_INVALID_UNIVERSALSTRING_LENGTH),"invalid universalstring length"},
 | 
					{ERR_REASON(ASN1_R_INVALID_UNIVERSALSTRING_LENGTH),"invalid universalstring length"},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -227,6 +227,8 @@ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf)
 | 
				
			|||||||
	/* Allocate buffer for new encoding */
 | 
						/* Allocate buffer for new encoding */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	new_der = OPENSSL_malloc(len);
 | 
						new_der = OPENSSL_malloc(len);
 | 
				
			||||||
 | 
						if (!new_der)
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Generate tagged encoding */
 | 
						/* Generate tagged encoding */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -452,6 +454,8 @@ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
 | 
				
			|||||||
	int derlen;
 | 
						int derlen;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	sk = sk_ASN1_TYPE_new_null();
 | 
						sk = sk_ASN1_TYPE_new_null();
 | 
				
			||||||
 | 
						if (!sk)
 | 
				
			||||||
 | 
							goto bad;
 | 
				
			||||||
	if (section)
 | 
						if (section)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		if (!cnf)
 | 
							if (!cnf)
 | 
				
			||||||
@@ -464,7 +468,8 @@ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
 | 
				
			|||||||
			ASN1_TYPE *typ = ASN1_generate_v3(sk_CONF_VALUE_value(sect, i)->value, cnf);
 | 
								ASN1_TYPE *typ = ASN1_generate_v3(sk_CONF_VALUE_value(sect, i)->value, cnf);
 | 
				
			||||||
			if (!typ)
 | 
								if (!typ)
 | 
				
			||||||
				goto bad;
 | 
									goto bad;
 | 
				
			||||||
			sk_ASN1_TYPE_push(sk, typ);
 | 
								if (!sk_ASN1_TYPE_push(sk, typ))
 | 
				
			||||||
 | 
									goto bad;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -475,6 +480,9 @@ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		derlen = i2d_ASN1_SEQUENCE_ANY(sk, &der);
 | 
							derlen = i2d_ASN1_SEQUENCE_ANY(sk, &der);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (derlen < 0)
 | 
				
			||||||
 | 
							goto bad;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(ret = ASN1_TYPE_new()))
 | 
						if (!(ret = ASN1_TYPE_new()))
 | 
				
			||||||
		goto bad;
 | 
							goto bad;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -239,7 +239,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
 | 
				
			|||||||
				ii=d2i_ASN1_BOOLEAN(NULL,&opp,len+hl);
 | 
									ii=d2i_ASN1_BOOLEAN(NULL,&opp,len+hl);
 | 
				
			||||||
				if (ii < 0)
 | 
									if (ii < 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					if (BIO_write(bp,"Bad boolean\n",12))
 | 
										if (BIO_write(bp,"Bad boolean\n",12) <= 0)
 | 
				
			||||||
						goto end;
 | 
											goto end;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				BIO_printf(bp,":%d",ii);
 | 
									BIO_printf(bp,":%d",ii);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,10 +66,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
 | 
					/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STACK_OF(BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
 | 
					STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
 | 
				
			||||||
				 d2i_of_void *d2i, void (*free_func)(BLOCK))
 | 
								 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK))
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    STACK_OF(BLOCK) *sk;
 | 
					    STACK_OF(OPENSSL_BLOCK) *sk;
 | 
				
			||||||
    const unsigned char *pbuf;
 | 
					    const unsigned char *pbuf;
 | 
				
			||||||
    pbuf =  buf;
 | 
					    pbuf =  buf;
 | 
				
			||||||
    if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func,
 | 
					    if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func,
 | 
				
			||||||
@@ -82,7 +82,7 @@ STACK_OF(BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
 | 
				
			|||||||
 * OPENSSL_malloc'ed buffer
 | 
					 * OPENSSL_malloc'ed buffer
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned char *ASN1_seq_pack(STACK_OF(BLOCK) *safes, i2d_of_void *i2d,
 | 
					unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
 | 
				
			||||||
			     unsigned char **buf, int *len)
 | 
								     unsigned char **buf, int *len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int safelen;
 | 
						int safelen;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,9 +57,6 @@
 | 
				
			|||||||
#include <openssl/bio.h>
 | 
					#include <openssl/bio.h>
 | 
				
			||||||
#include <openssl/err.h>
 | 
					#include <openssl/err.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef OPENSSL_SYSNAME_NETWARE
 | 
					 | 
				
			||||||
#include <memory.h>
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Experimental NDEF ASN1 BIO support routines */
 | 
					/* Experimental NDEF ASN1 BIO support routines */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,9 +87,13 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	else	ret= *a;
 | 
						else	ret= *a;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret->save_type=type;
 | 
						if (!EVP_PKEY_set_type(ret, type))
 | 
				
			||||||
	ret->type=EVP_PKEY_type(type);
 | 
							{
 | 
				
			||||||
	switch (ret->type)
 | 
							ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
 | 
				
			||||||
 | 
							goto err;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (EVP_PKEY_id(ret))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifndef OPENSSL_NO_RSA
 | 
					#ifndef OPENSSL_NO_RSA
 | 
				
			||||||
	case EVP_PKEY_RSA:
 | 
						case EVP_PKEY_RSA:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -242,7 +242,7 @@ RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
 | 
				
			|||||||
		 int sgckey)
 | 
							 int sgckey)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	RSA *ret=NULL;
 | 
						RSA *ret=NULL;
 | 
				
			||||||
	const unsigned char *p, *kp;
 | 
						const unsigned char *p;
 | 
				
			||||||
	NETSCAPE_ENCRYPTED_PKEY *enckey = NULL;
 | 
						NETSCAPE_ENCRYPTED_PKEY *enckey = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	p = *pp;
 | 
						p = *pp;
 | 
				
			||||||
@@ -265,7 +265,6 @@ RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
 | 
				
			|||||||
		ASN1err(ASN1_F_D2I_RSA_NET,ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM);
 | 
							ASN1err(ASN1_F_D2I_RSA_NET,ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM);
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	kp = enckey->enckey->digest->data;
 | 
					 | 
				
			||||||
	if (cb == NULL)
 | 
						if (cb == NULL)
 | 
				
			||||||
		cb=EVP_read_pw_string;
 | 
							cb=EVP_read_pw_string;
 | 
				
			||||||
	if ((ret=d2i_RSA_NET_2(a, enckey->enckey->digest,cb, sgckey)) == NULL) goto err;
 | 
						if ((ret=d2i_RSA_NET_2(a, enckey->enckey->digest,cb, sgckey)) == NULL) goto err;
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user