From owner-openssl-cvs@openssl.org  Wed Jan  2 10:03:10 2002
Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-cvs-L
	id KAA14983; Wed, 2 Jan 2002 10:02:11 +0100 (MET)
Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-cvs@openssl.org
	id KAA14966; Wed, 2 Jan 2002 10:01:47 +0100 (MET)
Date: Wed, 2 Jan 2002 10:01:47 +0100 (MET)
Message-Id: <200201020901.KAA14966@opensource.ee.ethz.ch>
From: levitte@openssl.org
Subject: cvs commit: openssl-play/levitte/patches/openssl-0.9.6x - New directory
To: openssl-cvs@openssl.org
Sender: owner-openssl-cvs@openssl.org
Precedence: bulk
Reply-To: openssl-dev@openssl.org
X-Sender: levitte@openssl.org
X-List-Manager: OpenSSL Majordomo [version 1.94.4]
X-List-Name: openssl-cvs

levitte     02-Jan-2002 10:01:46

  openssl-play/levitte/patches/openssl-0.9.6x - New directory
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                     openssl-cvs@openssl.org
Automated List Manager                           majordomo@openssl.org

From owner-openssl-cvs@openssl.org  Wed Jan  2 10:06:07 2002
Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-cvs-L
	id KAA15497; Wed, 2 Jan 2002 10:05:12 +0100 (MET)
Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-cvs@openssl.org
	id KAA15482; Wed, 2 Jan 2002 10:05:03 +0100 (MET)
Date: Wed, 2 Jan 2002 10:05:03 +0100 (MET)
Message-Id: <200201020905.KAA15482@opensource.ee.ethz.ch>
From: levitte@openssl.org
Subject: cvs commit: openssl-play/levitte/patches/openssl-0.9.6x 20011223-01.patch 20011225-01.patch 20011227-01.patch 20011228-01.patch 20011228-02.patch 20011229-01.patch
To: openssl-cvs@openssl.org
Sender: owner-openssl-cvs@openssl.org
Precedence: bulk
Reply-To: openssl-dev@openssl.org
X-Sender: levitte@openssl.org
X-List-Manager: OpenSSL Majordomo [version 1.94.4]
X-List-Name: openssl-cvs

levitte     02-Jan-2002 10:05:01

  Added:       levitte/patches 20011205-01.patch 20011213-01.patch
                        20011220-01.patch 20011222-01.patch
                        20011223-01.patch 20011225-01.patch
                        20011228-01.patch
               levitte/patches/openssl-0.9.6x 20011223-01.patch
                        20011225-01.patch 20011227-01.patch
                        20011228-01.patch 20011228-02.patch
                        20011229-01.patch
  Log:
  Collected patches
  
  Revision  Changes    Path
  1.3       +0 -0      openssl-play/levitte/patches/20011205-01.patch
  1.1                  openssl-play/levitte/patches/20011213-01.patch
  1.1                  openssl-play/levitte/patches/20011220-01.patch
  1.1                  openssl-play/levitte/patches/20011222-01.patch
  1.1                  openssl-play/levitte/patches/20011223-01.patch
  1.1                  openssl-play/levitte/patches/20011225-01.patch
  1.1                  openssl-play/levitte/patches/20011228-01.patch
  
  
  Index: 20011213-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-dev@mmx.engelschall.com
  Received: from mmx.engelschall.com ([195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id SAA23458
  	for <levitte@stacken.kth.se>; Wed, 12 Dec 2001 18:40:36 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id 245EE19493; Wed, 12 Dec 2001 14:24:10 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id B8D071947D
  	for <mmx-openssl-dev@mmx.engelschall.com>; Wed, 12 Dec 2001 14:24:09 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-dev-L
  	id NAA08962; Wed, 12 Dec 2001 13:19:09 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-dev@openssl.org>
  	from smtp.AdNovum.CH id NAA08929; Wed, 12 Dec 2001 13:18:18 +0100 (MET)
  Received: from AdNovum.CH (colombo.adnovum.ch [192.168.4.164])
  	by smtp.AdNovum.CH (Postfix) with ESMTP
  	id 24E813981E; Wed, 12 Dec 2001 13:13:17 +0100 (MET)
  Message-ID: <3C174B09.28A8EFE1@AdNovum.CH>
  Date: Wed, 12 Dec 2001 13:18:17 +0100
  From: Eric Laroche <Eric.Laroche@AdNovum.CH>
  Organization: AdNovum Informatik AG
  X-Mailer: Mozilla 4.74 [en] (X11; U; SunOS 5.8 sun4u)
  MIME-Version: 1.0
  To: openssl-dev@openssl.org
  Subject: [PATCH] PKCS#11 code update
  Content-Type: multipart/mixed;
   boundary="------------AC91160DF4ECBBECEDA37ED8"
  Sender: owner-openssl-dev@openssl.org
  Precedence: bulk
  Reply-To: openssl-dev@openssl.org
  X-Sender: Eric Laroche <Eric.Laroche@AdNovum.CH>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-dev
  
  This is a multi-part message in MIME format.
  --------------AC91160DF4ECBBECEDA37ED8
  Content-Type: text/plain; charset=us-ascii
  Content-Transfer-Encoding: 7bit
  
  
  Hi developers,
  
  I reworked some of our (AdNovum's) previously posted OpenSSL PKCS#11
  code.  Code robustness has been enhanced and the code is (so I hope)
  clearer, and better layered (into a core PKCS#11 part and a PKCS#11
  token object finding (keys, certs) part).
  
  The object finding logic has been enhanced to allow 'denormalized(?)'
  keys and certificates to be found and loaded (e.g. private keys
  missing modulus attribute, or certificates missing the (rsa) key
  type...).
  
  The token object specification format has been widened.  It is now
  more powerful and more intuitive, using name/value pairs, e.g.:
  "pkcs11:library=cryptoki&tokenlabel=eric&objectlabel=two&dologin=true"
  
  The object specification format is now open to allow the notation of
  such things as: 'should a sign/verify request be handled by the token
  or by openssl?' (non-extractable/sensitive keys vs. speed issues...).
  however, that has not been implemented yet; sensitive operations such
  as signatures are generally done by the token, verifies are done by
  OpenSSL (which is faster, in most cases).
  
  Some open issues are:
  
  - Thread safeness issues are not exhaustively done.
  
  - There are still some (minor) TODOs scattered in the code.
  
  - It needs, of course, more test cases, with more use patterns.
  
  Best regards,
  Eric
  
  -- 
  Eric Laroche <eric.laroche@adnovum.ch>, AdNovum Informatik AG
  --------------AC91160DF4ECBBECEDA37ED8
  Content-Type: application/x-gzip;
   name="pkcs11-adnovum-20011212.tar.gz"
  Content-Disposition: inline;
   filename="pkcs11-adnovum-20011212.tar.gz"
  Content-Transfer-Encoding: base64
  
  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
  k2gqt5/5Herj0tubjmHv9PdP+2zBAeHwQd1W9GUMRIoRR/AUIXdFItHzKOqTxzYcC9fhDUbL
  8rz6/OVPyU+ZyyeDXfavwyJ3rY5rjkI0QVXt3Zl5Osu+WpsuaG9bN5S8NzdlG7BRviMwr0oe
  IxfTS0VlK8L9YdiRfVswYZo8HXHAJl/EJlhvLp3qy8Q/998eY0ByCrBPQvhJtd7qvgb5LVjx
  lq/8Wkm3s6qmvv74/Y/P5Sv+mfr6c3d340f5TH9b348Ptuz+7Z9OrV231q6vVvtNddOu5vy2
  Yaqf1I4PNrd+cGaWKcy2eL7haWEVenDWbVZrJzaO8bdVDyXa1HKki9zaXCHVA85UWuKf9tc3
  3iX3FXtayb3H1OcCe577W9SJUJL5lapT238l3+Gv1Lf9V/vyDf5KfTuuqm/wV/YbjlRrYVjK
  lVRJdgyY6IEZB385dXaceex457HD32xM1dpWO+tXqg7PX/5KfeP5y1+pbzx/+Sv7zZp/qiQ7
  hszf+uXW2XInsuWfybZbazuvlp7wdnbG22bK29k5b5tJb2dnvZ2d9nb+vLfdiW97Zr5/cHxo
  zcn+ma7Fc1J/pr/ynNSf6a88J/Wn56s1p3SRZySZk/3T5arMTFOc9g1Dof70fLWgSBe5/JjZ
  cIpH6/53s/3vZvvfzesfmFh3kzl4dzNdrkYxP7w1rJGyhb7TwD4EvKeFjOsW5Na0WZP3g+98
  sY8V7/njwiAFuTWzMKQ+2JRVbXfsfWD9TNeSfSB/pr/KPpA/019lH8ifnq/2PkgVeUZS+8D6
  maq1nZrUds6stq1pbXvmtW1NbNszs21ratueuW17JrddMLvt1PS2c+a3m5rfbs78kPzcmlZJ
  pk+Di10PLrClqSG/Mn0YfO168IWtTA35lenD4HTXg1NsZWrIL18fKbzvFuBdekm1SJX65mqt
  1W7OWsksrZpWiSNp7DrSyK5XGtnVUtVuRqra1VLVbkaq2tVS1W5GqtrNSFW7uVLVriNV+eZc
  P6hVrYnYP9O1eCrqz/RXnoz6M/2Vp6P+9Hy1JpQu8owkU7J/WrWoXX0fNc2tms0x/R9sCmg2
  8Imlgfp91K53q40DTm+2kvdpXmsOhL6S+y2nPX6iOqTkd9s736z2PzdbmXEzZVZ9UfUTHg5b
  zWOZqa/YPr/bR9vopw1L1Ebtk0Fvzpd0W+urvr34P6Rb4hecBxKH2zT7JTPqgdpU9s90LbqQ
  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
  CmeYVyEzcrPZPa42PuhA+Z5Sqw0tQO1AznwFr6c0p429Q73l6Xa5dLkYVebT5HyKnEuPC1Mj
  9HzQPAb2CLNNM/3cb9n2cDMTjbX926r36vTwUFavfVzFy/dKusjmm1WQ8jGOXcfhtNlSq43l
  IOTcvrzl9ljU32kDexcRLF1k3xpJW/y27tlReZ98rRXx5/Tg+WxLdXCx+1luzfrvzHfmCSKB
  pIuykdJb6Sd9Fawi9YifExd9Sq5Nd7XTlFjN00v2gwnP8GH5h50gGk4nMXmskJcqDtGSMOcw
  dvc8niTTbnBF4bFKowk6s13En6MhBrL2ur6W7ytE1eTzVwm7rimBbtD7zYMF469PPnPg9dZC
  gddN5xJ43RSQgQVMboGI68fh2KM+m0RhgjE1RkFzHA3b7SOn3AnBTh9aVO7q7+Yoz4ri8v4R
  cC5WtiWMwIGqI5xcu4y7BF9AYQf8EZ+5bf0aTgMqw0algqyqzanAhTlaN6em9aVAAec0SX3N
  1cU5jZxvBWo5p1Hqa66GzmnkfPMp65zaqni+3s5t5q3kVeGlF4bL52jz3Blla8xR7OU01zXm
  6/hyerArLaDuy+nFqZWn+XPa2p/ylYDZJvpjnj7QbWJ9ylUN+lqkN1BaS+hrIx/nKwydxv5K
  i+gOi7rxoMmjRvTvTfV9rkbR39yuM1+5mN+HrlSsZ3Q6yFbIVzlmGpqPc7WPmbaZOvmKyExb
  8zFHJ5lpIV/86sls/56+XU1lpon9eTGlZaYLf8VC/aUXM/p7oSoz09T5XqjVdJpmvi+g4Mzp
  wKk1V9fpigO+OkVqT7d16vNCGtCcHlL1cpWhTnPnW45e1NMgNcuUijTTwMPiHG1ppoF88StO
  s93Th3wdqitBOR9z1an+NvhtvmbV2zaPQuYpWb2d+SsX6lu9/XhkmrTq1duOPy6ihS0etrij
  jEI2v7NU1ULdrNtL+vscNW1OYw+FezW2TnNPjbnK2/wOsseZR4/rNk9/n6fSzWltqszV7np6
  SNVZWNHrdFVYdyGdb1F3PnFjvvq3qMcCISRPE+x2561UrBTOduBUWEQ/nO3CU61QVZztwX+t
  mac19mAjr/IcBbIHIqfGHF2y09xTY65aObcDD09ZfEMstB0W2wxzt8JSG2HRbVCggnb6y62X
  q432NedvRYppp1X68xwdtXtoZGvMVVc7HXjrFGmu3eFTnxdRYrtqlJxqi+qz/Z15qnpV264E
  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
  Pv/3zdPv6ff0+9/+/ga2/cpGAEgFAA==
  --------------AC91160DF4ECBBECEDA37ED8--
  
  ______________________________________________________________________
  OpenSSL Project                                 http://www.openssl.org
  Development Mailing List                       openssl-dev@openssl.org
  Automated List Manager                           majordomo@openssl.org
  
  Index: 20011220-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-dev@mmx.engelschall.com
  Received: from mmx.engelschall.com (mmx.engelschall.com [195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id SAA12183
  	for <levitte@stacken.kth.se>; Wed, 19 Dec 2001 18:45:47 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id 1386A194A8; Wed, 19 Dec 2001 18:44:16 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id BD37319354
  	for <mmx-openssl-dev@mmx.engelschall.com>; Wed, 19 Dec 2001 18:44:15 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-dev-L
  	id SAA14708; Wed, 19 Dec 2001 18:43:40 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-dev@openssl.org>
  	from congress.vhcorp.com id SAA14655; Wed, 19 Dec 2001 18:42:39 +0100 (MET)
  Received: by congress.vhcorp.com with Internet Mail Service (5.5.2653.19)
  	id <ZDA5Q6Z8>; Wed, 19 Dec 2001 09:42:32 -0800
  Message-ID: <0102AE2D3200D4118AE20050DACDB02E7220E0@congress.vhcorp.com>
  From: Leonard Janke <leonard@votehere.net>
  To: "'openssl-dev@openssl.org'" <openssl-dev@openssl.org>
  Cc: "'crypt@bxa.doc.gov'" <crypt@bxa.doc.gov>
  Subject: [PATCH] P7 Verification of Non-Data Types
  Date: Wed, 19 Dec 2001 09:42:32 -0800
  MIME-Version: 1.0
  X-Mailer: Internet Mail Service (5.5.2653.19)
  Content-Type: multipart/mixed;
  	boundary="----_=_NextPart_000_01C188B4.89804420"
  Sender: owner-openssl-dev@openssl.org
  Precedence: bulk
  Reply-To: openssl-dev@openssl.org
  X-Sender: Leonard Janke <leonard@votehere.net>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-dev
  
  This message is in MIME format. Since your mail reader does not understand
  this format, some or all of this message may not be legible.
  
  ------_=_NextPart_000_01C188B4.89804420
  Content-Type: text/plain;
  	charset="iso-8859-1"
  
  
  Right now verification only seem to be supported if
  the signed data is of type DATA. According to
  the standard other types can be signed, however. Here
  is a patch to allow verification of data types
  which are octet strings but not necessarily
  of type DATA.
  
  Leonard Janke
  
  
   <<p7doit.patch>> 
  
  ------_=_NextPart_000_01C188B4.89804420
  Content-Type: application/octet-stream;
  	name="p7doit.patch"
  Content-Disposition: attachment;
  	filename="p7doit.patch"
  
  --- pk7_doit.c.org	Wed Dec 19 09:34:50 2001
  +++ pk7_doit.c	Tue Dec 18 17:06:28 2001
  @@ -67,6 +67,37 @@
   			 void *value);
   static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid);
   
  +static int PKCS7_type_is_other(PKCS7* p7)
  +{
  +	int isOther=1;
  +	
  +	int nid=OBJ_obj2nid(p7->type);
  +
  +	switch( nid ){
  +	case NID_pkcs7_data:
  +	case NID_pkcs7_signed:
  +	case NID_pkcs7_enveloped:
  +	case NID_pkcs7_signedAndEnveloped:
  +	case NID_pkcs7_digest:
  +	case NID_pkcs7_encrypted:
  +		isOther=0;
  +		break;
  +	default:
  +		isOther=1;
  +	}
  +
  +	return isOther;
  +
  +}
  +
  +static int PKCS7_type_is_octet_string(PKCS7* p7)
  +{
  +	if ( 0==PKCS7_type_is_other(p7) )
  +		return 0;
  +
  +	return (V_ASN1_OCTET_STRING==p7->d.other->type) ? 1 : 0;
  +}
  +
   BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
   	{
   	int i,j;
  @@ -222,13 +253,22 @@
   		if (p7->detached)
   			bio=BIO_new(BIO_s_null());
   		else {
  -			if (PKCS7_type_is_signed(p7) &&
  -				PKCS7_type_is_data(p7->d.sign->contents)) {
  +			if (PKCS7_type_is_signed(p7) ) { 
  +				if ( PKCS7_type_is_data(p7->d.sign->contents)) {
   				ASN1_OCTET_STRING *os;
   				os=p7->d.sign->contents->d.data;
   				if (os->length > 0) bio = 
   					BIO_new_mem_buf(os->data, os->length);
  +				}
  +				else if ( PKCS7_type_is_octet_string(p7->d.sign->contents) ) {
  +				ASN1_OCTET_STRING *os;
  +				os=p7->d.sign->contents->d.other->value.octet_string;
  +				if (os->length > 0) bio = 
  +					BIO_new_mem_buf(os->data, os->length);
  +				}
  +
   			} 
  +
   			if(bio == NULL) {
   				bio=BIO_new(BIO_s_mem());
   				BIO_set_mem_eof_return(bio,0);
  @@ -943,4 +983,5 @@
   end:
   	return(1);
   	}
  +
   
  
  ------_=_NextPart_000_01C188B4.89804420--
  ______________________________________________________________________
  OpenSSL Project                                 http://www.openssl.org
  Development Mailing List                       openssl-dev@openssl.org
  Automated List Manager                           majordomo@openssl.org
  
  Index: 20011222-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-users@mmx.engelschall.com
  Received: from mmx.engelschall.com (mmx.engelschall.com [195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id BAA18527
  	for <levitte@stacken.kth.se>; Sat, 22 Dec 2001 01:08:03 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id 85C9819388; Sat, 22 Dec 2001 01:06:12 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id 52ED919387
  	for <mmx-openssl-users@mmx.engelschall.com>; Sat, 22 Dec 2001 01:06:12 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-users-L
  	id BAA18030; Sat, 22 Dec 2001 01:05:11 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-users@openssl.org>
  	from mms-o00.iijmio-mail.jp id BAA17991; Sat, 22 Dec 2001 01:04:06 +0100 (MET)
  Received: MMS O id fBM042921014; Sat, 22 Dec 2001 09:04:03 +0900 (JST)
  Received: MMS R00 id fBM041u17594; Sat, 22 Dec 2001 09:04:02 +0900 (JST)
  	from localhost (user1.ttv.ne.jp [210.151.150.2])
  	for <openssl-users@openssl.org>; (authenticated)
  Date: Sat, 22 Dec 2001 09:04:01 +0900 (JST)
  Message-Id: <20011222.090401.123556927.manabu@iij.ad.jp>
  To: openssl-users@openssl.org
  Subject: Re: Mac OSX Server 10.1 (Darwin)
  From: Manabu Kondo <manabu@iij.ad.jp>
  In-Reply-To: <F54A7182-CFBA-11D5-8B75-0003931078EC@frontbase.com>
  References: <F54A7182-CFBA-11D5-8B75-0003931078EC@frontbase.com>
  X-Mailer: Mew version 3.0.50 on Emacs 20.7 / Mule 4.0 (HANANOEN)
  Mime-Version: 1.0
  Content-Type: Text/Plain; charset=us-ascii
  Content-Transfer-Encoding: 7bit
  Sender: owner-openssl-users@openssl.org
  Precedence: bulk
  Reply-To: openssl-users@openssl.org
  X-Sender: Manabu Kondo <manabu@iij.ad.jp>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-users
  
  Dale,
  
  Date: Fri, 2 Nov 2001 09:56:36 -0800
  Subject: Mac OSX Server 10.1 (Darwin)
  From: Dale Schell <dale@frontbase.com> sez:
  
  > Hi all,
  > 	I am compiling libcurl for php on Mac OSX Server 10.1. I need 
  > libcurl to support ssl. When I try to ./config for openssl 9.6b I get 
  > this message.
  > 
  > Operating system: Power Macintosh-whatever-Darwin
  > This system (Darwin) is not supported. See file INSTALL for details.
  > 
  > 	Is there something I can change that will allow it to work with 10.1?
  
  How about this patch?
  http://www.withay.com/macosx/openssl-0.9.6b.patch
  
  But I had a 'make test problem' on OS X 10.1.2.
  The config and make is ok, but at 'make test', all test for RC4 failed.
  Does anyone have an idea or tips?
  
  Thank you
  
  --manabu
  ______________________________________________________________________
  OpenSSL Project                                 http://www.openssl.org
  User Support Mailing List                    openssl-users@openssl.org
  Automated List Manager                           majordomo@openssl.org
  
  Index: 20011223-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-dev@mmx.engelschall.com
  Received: from mmx.engelschall.com (mmx.engelschall.com [195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id WAA02008
  	for <levitte@stacken.kth.se>; Sun, 23 Dec 2001 22:55:42 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id A738319386; Sun, 23 Dec 2001 22:54:13 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id 745D91930B
  	for <mmx-openssl-dev@mmx.engelschall.com>; Sun, 23 Dec 2001 22:54:13 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-dev-L
  	id WAA07341; Sun, 23 Dec 2001 22:53:31 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-dev@openssl.org>
  	from defiant.dfw.nostrum.com id WAA07300; Sun, 23 Dec 2001 22:52:22 +0100 (MET)
  Received: (from sprunk@localhost)
  	by defiant.dfw.nostrum.com (8.11.3/8.11.3) id fBNLqH010020;
  	Sun, 23 Dec 2001 15:52:17 -0600
  Date: Sun, 23 Dec 2001 15:52:17 -0600
  From: Stephen Sprunk <stephen@sprunk.org>
  To: openssl-dev@openssl.org
  Cc: exports@crypto.com
  Subject: [PATCH] aes integration (2nd try)
  Message-ID: <20011223155217.H24331@defiant.dfw.nostrum.com>
  Mime-Version: 1.0
  Content-Type: text/plain; charset=us-ascii
  Content-Disposition: inline
  User-Agent: Mutt/1.3.16i
  Sender: owner-openssl-dev@openssl.org
  Precedence: bulk
  Reply-To: openssl-dev@openssl.org
  X-Sender: Stephen Sprunk <stephen@sprunk.org>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-dev
  
  Okay, here's my first stab at some improvements to AES integration.
  
  .  apps/openssl speed now supports aes options, works just like des.
  .  improved efficiency of EVP calling AES
  .  substantial AES API cleanup
  
  Coming soon:
  
  .  128-bit CFB and OFB modes
  .  Support in more apps/openssl programs
  .  MMX ASM code
  
  I'll leave renaming rijndael.h and crypto/rijndael/ to someone with
  more CVS skill :)
  
  cvs diff -Nu is at:
  http://defiant.dfw.nostrum.com/~sprunk/aes.diff.bz2
  
  S
  
  -- 
  Stephen Sprunk          "So long as they don't get violent, I want to
  CCIE #3723         let everyone say what they wish, for I myself have
  K5SSS        always said exactly what pleased me."  --Albert Einstein
  ______________________________________________________________________
  OpenSSL Project                                 http://www.openssl.org
  Development Mailing List                       openssl-dev@openssl.org
  Automated List Manager                           majordomo@openssl.org
  
  Index: 20011225-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-dev@mmx.engelschall.com
  Received: from mmx.engelschall.com (mmx.engelschall.com [195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id CAA27682
  	for <levitte@stacken.kth.se>; Tue, 25 Dec 2001 02:27:41 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id 2DF3B19389; Tue, 25 Dec 2001 02:26:11 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id EB6831930B
  	for <mmx-openssl-dev@mmx.engelschall.com>; Tue, 25 Dec 2001 02:26:10 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-dev-L
  	id CAA07137; Tue, 25 Dec 2001 02:25:19 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-dev@openssl.org>
  	from yellow.rahul.net id CAA07122; Tue, 25 Dec 2001 02:24:59 +0100 (MET)
  Received: by yellow.rahul.net (Postfix, from userid 2717)
  	id 5835A8088; Mon, 24 Dec 2001 17:24:57 -0800 (PST)
  Received: from localhost (localhost [127.0.0.1])
  	by yellow.rahul.net (Postfix) with ESMTP
  	id 2883C7F31; Mon, 24 Dec 2001 17:24:57 -0800 (PST)
  Date: Mon, 24 Dec 2001 17:24:56 -0800 (PST)
  From: Doug Kaufman <dkaufman@rahul.net>
  To: openssl-dev@openssl.org
  Cc: Bureau of Export Administration <crypt@bxa.doc.gov>
  Subject: DOS patch for openssl-0.9.7
  Message-ID: <Pine.BSF.4.21.0112241710030.48276-101000@yellow.rahul.net>
  MIME-Version: 1.0
  Content-Type: MULTIPART/MIXED; BOUNDARY="0-1440891037-1009243496=:48276"
  Sender: owner-openssl-dev@openssl.org
  Precedence: bulk
  Reply-To: openssl-dev@openssl.org
  X-Sender: Doug Kaufman <dkaufman@rahul.net>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-dev
  
    This message is in MIME format.  The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.
    Send mail to mime@docserver.cac.washington.edu for more info.
  
  --0-1440891037-1009243496=:48276
  Content-Type: TEXT/PLAIN; charset=US-ASCII
  
  Attached is a patch to allow openssl-0.9.7 to compile under DOS with
  DJGPP. This is based on the 20011222 tarball. Here are some comments
  on the changes:
  
  Configure: This allows for the DOS path names, with drive letter and
  either "/" or "\" path separator. The ".h" and test files are either
  symbolically linked or copied for algorithms which are not to be
  compiled in, allowing "make test" to function properly.
  
  Makefile.org: "make test" was trying to compile test.c after
  completing the tests in the test directory. Adding a line with a TAB
  after the "test:" line fixes that.
  
  crypto/bn/bn_mul.c: This is a quick fix for DJGPP and CYGWIN,
  but doesn't fix the underlying problem. BN_RECURSION appears to
  be defined for all platforms in bn.h. bn_mul.c uses the function
  bn_sub_part_words in a section of the code ifdef'd BN_RECURSION, but
  bn_sub_part_words is compiled only when OPENSSL_NO_ASM is defined
  or when __i386__ or __i386 are not defined. The function is NOT
  defined in bn_asm.c. Can we remove the ifdef for all platforms for
  bn_sub_part_words?
  
  crypto/des/Makefile.ssl: This fixes the paths so that both symbolic
  linking and copying work.
  
  crypto/rand/rand_egd.c: This excludes DJGPP from the entropy
  gathering daemon. Are there any platforms where egd works that are
  defined OPENSSL_SYS_MSDOS? If not, wouldn't it be better to add
  OPENSSL_SYS_MSDOS rather than __DJGPP__ to the ifdef list?
  
  tools/c_rehash.in: This allows the test for openssl to pass, even when
  the file is actually named "openssl.exe".
  
  util/point.sh: This is specific for DJGPP, but needs to be generalized
  to copy for any platform that doesn't have symbolic links. If would
  work for DJGPP if we changed "ln -s" to "ln", since DJGPP's ln will
  actually copy when hard links are requested. Would changing "ln -s" to
  "ln" work for other platforms without symbolic links?
  
  The other changes should be self-explanatory.
                              Doug
  
  __ 
  Doug Kaufman
  Internet: dkaufman@rahul.net
  
  --0-1440891037-1009243496=:48276
  Content-Type: APPLICATION/x-gunzip; name="097.pch.gz"
  Content-ID: <Pine.BSF.4.21.0112241724560.48276@yellow.rahul.net>
  Content-Description: 
  Content-Disposition: attachment; filename="097.pch.gz"
  Content-Transfer-Encoding: BASE64
  
  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
  Wvg3U4JTKJwvAAA=
  --0-1440891037-1009243496=:48276--
  ______________________________________________________________________
  OpenSSL Project                                 http://www.openssl.org
  Development Mailing List                       openssl-dev@openssl.org
  Automated List Manager                           majordomo@openssl.org
  
  Index: 20011228-01.patch
  ===================================================================
  Return-Path: <push>
  Return-Path: owner-mmx-openssl-users@mmx.engelschall.com
  Received: from mmx.engelschall.com (mmx.engelschall.com [195.27.130.252])
  	by brev.stacken.kth.se (8.9.3/8.9.3) with ESMTP id JAA11545
  	for <levitte@stacken.kth.se>; Fri, 28 Dec 2001 09:02:05 +0100 (MET)
  Received: by mmx.engelschall.com (Postfix/smtpfeed 1.16)
  	id 1FDC61943B; Fri, 28 Dec 2001 09:00:29 +0100 (CET)
  Received: from opensource.ee.ethz.ch (opensource-01.ee.ethz.ch [129.132.7.153])
  	by mmx.engelschall.com (Postfix) with ESMTP id CE6DE19345
  	for <mmx-openssl-users@mmx.engelschall.com>; Fri, 28 Dec 2001 09:00:28 +0100 (CET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) for openssl-users-L
  	id IAA03686; Fri, 28 Dec 2001 08:59:36 +0100 (MET)
  Received: by en5.engelschall.com (Sendmail 8.9.2) via ESMTP for <openssl-users@openssl.org>
  	from bj.tom.com id IAA03608; Fri, 28 Dec 2001 08:58:15 +0100 (MET)
  Received: from huangyz ([::ffff:192.168.5.126])
    (AUTH: LOGIN huangyuzhen@bj.tom.com)
    by bj.tom.com with esmtp; Fri, 28 Dec 2001 15:58:36 +0800
  Message-ID: <04ac01c18f75$8364ee20$7e05a8c0@huangyz>
  From: "Huang Yuzhen" <huangyuzhen@bj.tom.com>
  To: openssl-users@openssl.org
  Subject: [PATCH]: CJK character in utf8 format fix
  Date: Fri, 28 Dec 2001 15:59:01 +0800
  MIME-Version: 1.0
  Content-Type: multipart/mixed;
  	boundary="----=_NextPart_000_04A9_01C18FB8.914076C0"
  X-Priority: 3
  X-MSMail-Priority: Normal
  X-Mailer: Microsoft Outlook Express 5.50.4522.1200
  X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
  Sender: owner-openssl-users@openssl.org
  Precedence: bulk
  Reply-To: openssl-users@openssl.org
  X-Sender: "Huang Yuzhen" <huangyuzhen@bj.tom.com>
  X-List-Manager: OpenSSL Majordomo [version 1.94.4]
  X-List-Name: openssl-users
  
  This is a multi-part message in MIME format.
  
  ------=_NextPart_000_04A9_01C18FB8.914076C0
  Content-Type: text/plain;
  	charset="gb2312"
  Content-Transfer-Encoding: 8bit
  
  Hi,all
  
  i have a patch and some meaning for those who want to create request and
  certificate
  in utf8 format use Chinese character.
  
  the issue is:
  i got the openssl-dev from the snapspot1224 and try a new argument "utf8" in
  the "req" command,
  it almostly look good and work fine.but when i use some Chinese character in
  "batch" mode
  (in this mode 'req' read all argument from config file,and prompt=no),it
  broke with error like that:
  <somewhere.... >:invalid utf8string:a_mbstr.c:131
  at this time i change some utf8 char in the config file,it can work.so i
  test with prompt mode and use
  the same argument in order to find out which character is bad egg but it
  work good.it is stranger.
  so i decide to do some hacking.
  i find the bad egg character is '<<',the bad char's unicode value(UCS2) is
  '6280' ,
  the utf8 form is'\xE6\x8A\x80',this value broke the openssl in batch mode.it
  maybe the
  0x80 that the openssl could not handle.i pick up gdb to trace the process.i
  trace into
  file_gets(bss_file.c),BIO_gets (bio_lib.c) etc..
  final find he def_load_bio (def_conf.c) ,there is some code eat my character
  from "\xE6\x8A\x80" to" \xE6\x00",
  i locate the code,the line 366 of def_conf.c,that is :
  
                          while ((p != start) && (IS_WS(conf,*p)))
                                  p--;
                          p++;
  what is IS_WS,it is macro,and it cognizance the '\x80' as '\x00',this will
  eat the characters.
  but the \x80 occour very popular in unicode
  you can find the unicode charts from:
  http://www.unicode.org/charts/PDF/U4E00.pdf ,
  the range is from 4E00 to 9FAF.for example: the usc2 char '6280' convert
  into utf8 is \xE6\x8A\x80,
  and ucs2 '6000' convert into utf8 is 'e68080'.
  after bug found,i do the fix.finally i change the 'keytype.pl' to regenerate
  new 'conf_def.h',the meaning is
  change the " foreach (0 .. 127) " to "< foreach (0 .. 255)" and "0x7f" to
  "0xff" and such of that things.
  
  i hope the patch would help somebody and someone could add the patch into
  the openssl-0.9.7dev tree.
  the attachment is my own keysets.pl and the diff file.
  
  
  ;FSmUf
  Huang Yuzhen
  
  
  ------=_NextPart_000_04A9_01C18FB8.914076C0
  Content-Type: application/octet-stream;
  	name="keysets.diff"
  Content-Disposition: attachment;
  	filename="keysets.diff"
  Content-Transfer-Encoding: quoted-printable
  
  *** keysets.pl	Thu Dec 27 18:17:21 2001=0A=
  --- openssl-SNAP-20011224/crypto/conf/keysets.pl	Sun Apr  9 21:00:17 2000=0A=
  ***************=0A=
  *** 12,20 ****=0A=
    $COMMENT=3D0x80;=0A=
    $FCOMMENT=3D0x800;=0A=
    $EOF=3D0x08;=0A=
  - $HIGHBIT=3D0x1000;=0A=
    =0A=
  ! foreach (0 .. 255)=0A=
    	{=0A=
    	$v=3D0;=0A=
    	$c=3Dsprintf("%c",$_);=0A=
  --- 12,19 ----=0A=
    $COMMENT=3D0x80;=0A=
    $FCOMMENT=3D0x800;=0A=
    $EOF=3D0x08;=0A=
    =0A=
  ! foreach (0 .. 127)=0A=
    	{=0A=
    	$v=3D0;=0A=
    	$c=3Dsprintf("%c",$_);=0A=
  ***************=0A=
  *** 28,39 ****=0A=
    	$v|=3D$QUOTE	if ($c =3D~ /['`"]/); # for emacs: "`'}/)=0A=
    	$v|=3D$COMMENT	if ($c =3D~ /\#/);=0A=
    	$v|=3D$EOF	if ($c =3D~ /\0/);=0A=
  - 	$v|=3D$HIGHBIT	if ($c =3D~/[\x80-\xff]/);=0A=
    =0A=
    	push(@V_def,$v);=0A=
    	}=0A=
    =0A=
  ! foreach (0 .. 255)=0A=
    	{=0A=
    	$v=3D0;=0A=
    	$c=3Dsprintf("%c",$_);=0A=
  --- 27,37 ----=0A=
    	$v|=3D$QUOTE	if ($c =3D~ /['`"]/); # for emacs: "`'}/)=0A=
    	$v|=3D$COMMENT	if ($c =3D~ /\#/);=0A=
    	$v|=3D$EOF	if ($c =3D~ /\0/);=0A=
    =0A=
    	push(@V_def,$v);=0A=
    	}=0A=
    =0A=
  ! foreach (0 .. 127)=0A=
    	{=0A=
    	$v=3D0;=0A=
    	$c=3Dsprintf("%c",$_);=0A=
  ***************=0A=
  *** 46,52 ****=0A=
    	$v|=3D$DQUOTE	if ($c =3D~ /["]/); # for emacs: "}/)=0A=
    	$v|=3D$FCOMMENT	if ($c =3D~ /;/);=0A=
    	$v|=3D$EOF	if ($c =3D~ /\0/);=0A=
  - 	$v|=3D$HIGHBIT	if ($c =3D~/[\x80-\xff]/);=0A=
    =0A=
    	push(@V_w32,$v);=0A=
    	}=0A=
  --- 44,49 ----=0A=
  ***************=0A=
  *** 125,131 ****=0A=
    #define CONF_COMMENT		$COMMENT=0A=
    #define CONF_FCOMMENT		$FCOMMENT=0A=
    #define CONF_EOF		$EOF=0A=
  - #define CONF_HIGHBIT		$HIGHBIT=0A=
    #define CONF_ALPHA		(CONF_UPPER|CONF_LOWER)=0A=
    #define CONF_ALPHA_NUMERIC	(CONF_ALPHA|CONF_NUMBER|CONF_UNDER)=0A=
    #define CONF_ALPHA_NUMERIC_PUNCT (CONF_ALPHA|CONF_NUMBER|CONF_UNDER| \\=0A=
  --- 122,127 ----=0A=
  ***************=0A=
  *** 133,172 ****=0A=
    =0A=
    #define KEYTYPES(c)		((unsigned short *)((c)->meth_data))=0A=
    #ifndef CHARSET_EBCDIC=0A=
  ! #define IS_COMMENT(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_COMMENT)=0A=
  ! #define IS_FCOMMENT(c,a)	(KEYTYPES(c)[(a)&0xff]&CONF_FCOMMENT)=0A=
  ! #define IS_EOF(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_EOF)=0A=
  ! #define IS_ESC(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_ESC)=0A=
  ! #define IS_NUMBER(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_NUMBER)=0A=
  ! #define IS_WS(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_WS)=0A=
  ! #define IS_ALPHA_NUMERIC(c,a)	=
  (KEYTYPES(c)[(a)&0xff]&CONF_ALPHA_NUMERIC)=0A=
    #define IS_ALPHA_NUMERIC_PUNCT(c,a) \\=0A=
  ! 				(KEYTYPES(c)[(a)&0xff]&CONF_ALPHA_NUMERIC_PUNCT)=0A=
  ! #define IS_QUOTE(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_QUOTE)=0A=
  ! #define IS_DQUOTE(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_DQUOTE)=0A=
  ! #define IS_HIGHBIT(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_HIGHBIT)=0A=
    =0A=
    #else /*CHARSET_EBCDIC*/=0A=
    =0A=
  ! #define IS_COMMENT(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_COMMENT)=0A=
  ! #define IS_FCOMMENT(c,a)	=
  (KEYTYPES(c)[os_toascii[a]&0xff]&CONF_FCOMMENT)=0A=
  ! #define IS_EOF(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_EOF)=0A=
  ! #define IS_ESC(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_ESC)=0A=
  ! #define IS_NUMBER(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_NUMBER)=0A=
  ! #define IS_WS(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_WS)=0A=
  ! #define IS_ALPHA_NUMERIC(c,a)	=
  (KEYTYPES(c)[os_toascii[a]&0xff]&CONF_ALPHA_NUMERIC)=0A=
    #define IS_ALPHA_NUMERIC_PUNCT(c,a) \\=0A=
  ! 				(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_ALPHA_NUMERIC_PUNCT)=0A=
  ! #define IS_QUOTE(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_QUOTE)=0A=
  ! #define IS_DQUOTE(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_DQUOTE)=0A=
  ! #define IS_HIGHBIT(c,a)		(KEYTYPES(c)[os_toascii[a]&0xff]&CONF_HIGHBIT)=0A=
    #endif /*CHARSET_EBCDIC*/=0A=
    =0A=
    EOF=0A=
    =0A=
  ! print "static unsigned short CONF_type_default[256]=3D{";=0A=
    =0A=
  ! for ($i=3D0; $i<256; $i++)=0A=
    	{=0A=
    	print "\n\t" if ($i % 8) =3D=3D 0;=0A=
    	printf "0x%03X,",$V_def[$i];=0A=
  --- 129,166 ----=0A=
    =0A=
    #define KEYTYPES(c)		((unsigned short *)((c)->meth_data))=0A=
    #ifndef CHARSET_EBCDIC=0A=
  ! #define IS_COMMENT(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_COMMENT)=0A=
  ! #define IS_FCOMMENT(c,a)	(KEYTYPES(c)[(a)&0x7f]&CONF_FCOMMENT)=0A=
  ! #define IS_EOF(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_EOF)=0A=
  ! #define IS_ESC(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_ESC)=0A=
  ! #define IS_NUMBER(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_NUMBER)=0A=
  ! #define IS_WS(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_WS)=0A=
  ! #define IS_ALPHA_NUMERIC(c,a)	=
  (KEYTYPES(c)[(a)&0x7f]&CONF_ALPHA_NUMERIC)=0A=
    #define IS_ALPHA_NUMERIC_PUNCT(c,a) \\=0A=
  ! 				(KEYTYPES(c)[(a)&0x7f]&CONF_ALPHA_NUMERIC_PUNCT)=0A=
  ! #define IS_QUOTE(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_QUOTE)=0A=
  ! #define IS_DQUOTE(c,a)		(KEYTYPES(c)[(a)&0x7f]&CONF_DQUOTE)=0A=
    =0A=
    #else /*CHARSET_EBCDIC*/=0A=
    =0A=
  ! #define IS_COMMENT(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_COMMENT)=0A=
  ! #define IS_FCOMMENT(c,a)	=
  (KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_FCOMMENT)=0A=
  ! #define IS_EOF(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_EOF)=0A=
  ! #define IS_ESC(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_ESC)=0A=
  ! #define IS_NUMBER(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_NUMBER)=0A=
  ! #define IS_WS(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_WS)=0A=
  ! #define IS_ALPHA_NUMERIC(c,a)	=
  (KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_ALPHA_NUMERIC)=0A=
    #define IS_ALPHA_NUMERIC_PUNCT(c,a) \\=0A=
  ! 				(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_ALPHA_NUMERIC_PUNCT)=0A=
  ! #define IS_QUOTE(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_QUOTE)=0A=
  ! #define IS_DQUOTE(c,a)		(KEYTYPES(c)[os_toascii[a]&0x7f]&CONF_DQUOTE)=0A=
    #endif /*CHARSET_EBCDIC*/=0A=
    =0A=
    EOF=0A=
    =0A=
  ! print "static unsigned short CONF_type_default[128]=3D{";=0A=
    =0A=
  ! for ($i=3D0; $i<128; $i++)=0A=
    	{=0A=
    	print "\n\t" if ($i % 8) =3D=3D 0;=0A=
    	printf "0x%03X,",$V_def[$i];=0A=
  ***************=0A=
  *** 174,182 ****=0A=
    =0A=
    print "\n\t};\n\n";=0A=
    =0A=
  ! print "static unsigned short CONF_type_win32[256]=3D{";=0A=
    =0A=
  ! for ($i=3D0; $i<256; $i++)=0A=
    	{=0A=
    	print "\n\t" if ($i % 8) =3D=3D 0;=0A=
    	printf "0x%03X,",$V_w32[$i];=0A=
  --- 168,176 ----=0A=
    =0A=
    print "\n\t};\n\n";=0A=
    =0A=
  ! print "static unsigned short CONF_type_win32[128]=3D{";=0A=
    =0A=
  ! for ($i=3D0; $i<128; $i++)=0A=
    	{=0A=
    	print "\n\t" if ($i % 8) =3D=3D 0;=0A=
    	printf "0x%03X,",$V_w32[$i];=0A=
  
  ------=_NextPart_000_04A9_01C18FB8.914076C0
  Content-Type: application/octet-stream;
  	name="keysets.pl"
  Content-Disposition: attachment;
  	filename="keysets.pl"
  Content-Transfer-Encoding: quoted-printable
  
  #!/usr/local/bin/perl=0A=
  =0A=
  $NUMBER=3D0x01;=0A=
  $UPPER=3D0x02;=0A=
  $LOWER=3D0x04;=0A=
  $UNDER=3D0x100;=0A=
  $PUNCTUATION=3D0x200;=0A=
  $WS=3D0x10;=0A=
  $ESC=3D0x20;=0A=
  $QUOTE=3D0x40;=0A=
  $DQUOTE=3D0x400;=0A=
  $COMMENT=3D0x80;=0A=
  $FCOMMENT=3D0x800;=0A=
  $EOF=3D0x08;=0A=
  $HIGHBIT=3D0x1000;=0A=
  =0A=
  foreach (0 .. 255)=0A=
  	{=0A=
  	$v=3D0;=0A=
  	$c=3Dsprintf("%c",$_);=0A=
  	$v|=3D$NUMBER	if ($c =3D~ /[0-9]/);=0A=
  	$v|=3D$UPPER	if ($c =3D~ /[A-Z]/);=0A=
  	$v|=3D$LOWER	if ($c =3D~ /[a-z]/);=0A=
  	$v|=3D$UNDER	if ($c =3D~ /_/);=0A=
  	$v|=3D$PUNCTUATION if ($c =3D~ /[!\.%&\*\+,\/;\?\@\^\~\|-]/);=0A=
  	$v|=3D$WS		if ($c =3D~ /[ \t\r\n]/);=0A=
  	$v|=3D$ESC	if ($c =3D~ /\\/);=0A=
  	$v|=3D$QUOTE	if ($c =3D~ /['`"]/); # for emacs: "`'}/)=0A=
  	$v|=3D$COMME