From raif@fl.net.au Wed Nov 21 05:34:22 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 166Uhy-0004FJ-00 for ; Wed, 21 Nov 2001 05:34:22 -0500 Received: from solomon.fl.net.au (a4-p05.syd.fl.net.au [202.181.2.69]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 75D9A169E3; Wed, 21 Nov 2001 21:34:18 +1100 (EST) Message-Id: <5.0.0.25.1.20011121195439.00a52eb0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Wed, 21 Nov 2001 21:35:59 +1100 To: GNU Crypto Developers From: "Raif S. Naffah" Cc: "Paulo S. L. M. Barreto" Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: [Classpathx-crypto] todo Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi there everybody, after so many weeks, we're finally here :-) thanks to Nic Ferrier for his hospitality, and for doing everything needed to make it happen. i've already checked in the initial copy of the project. it compiles --of course ;-) -- and have added a new tree structure (source/test) that includes junit tests. few notes before i go further: * the name src/ has been changed to source/ to align with the customs of the umbrella project; ie. classpathx. i've changed the references in the build.xml file to use a symbolic name ${src.dir} so it's easier if in the future the source directory naming changes. * the names under test/ mirror that under gnu/crypto/ . in other words, package gnu.crypto.foo will have its test classes in test/foo. from experience this proves to be easy when (a) compiling, jarring the main deliverables, and (b) separating the 'main' code from its 'test' counterpart. some people argue that this separation disallows testing package private methods. true; but (a) junit is not made for that, and (b) if an internal function is wrong then it will impact the result of a visible/public one. write enough test cases to ensure the fullfilment of the contract for the visible one and the weaknesses/bugs of the internal ones will appear --at least that's what i do. if somebody has other opinions/experience, pls share them. things left to do/solve before a first public release: 1. fix the links in the Javadoc for the reference documentation of the implemented algorithms. i was referencing a .zip file but when i checked in the project i only checked in the .pdf and .txt files that are included in those archives. i also moved the JavaStyle and AntStyle documents to the docs/ folder. 2. fix in the build.xml, in the docs section, the reference to the project home page --i still have to find that out from Nic before this can be done. 3. write an index.html page that will act as the root of all the project's documentation. this should mirror the README at the project's root. 4. debugging: the code still contains in-line debugging statements that can be turned on/off. it uses conditional compilation, so it's only useful for "programmers" and it requires re-compilation before the debugging output can occur. i dont like it as part of a released code. yes it's useful and necessary while you're getting the implementation to do what it's supposed to do, but for release it's ugly and confusing. i would like to remove it unless somebody can convince me otherwise. 5. code correctness: each algorithm is published with its test vectors. an implementation is deemed correct if it generates equivalent test vectors to those published by the designer of the algorithm. the junit tests attempt to test the implementations against a very small subset of those test vectors. is that enough? i should note that the tools under gnu.crypto.tools do generate the test vectors (at least for the gnu.crypto.cipher package) in NESSIE and (almost) NIST forms. yet the verification of the result is not straightforward: * either the gnu.crypto.tool tools generate a more or less exact match of the published test vectors and then a diff tool is run over these two files to detect eventual differences, or * we write a new tool that would read a published test vector file and try to generated the same from the implementation and compare the results --something that would automate the process of verifying an implementation basically. 6. deliverables: what should our deliverables consist of? separate archives for source, binaries, documentation? combine the lot? should we include the designers' reference documentation? their test vectors? have a look at the sizes of these files before giving an answer please. 7. versioning: what type of versioning should we use? things to do later: this is still an open issue, and i would leave that for everybody to suggest what they can do relative to the time they can spend working on this project. cheers; rsn From HBG42@hotmail.com Tue Nov 27 20:54:20 2001 Received: from delysid.gnu.org ([158.121.106.20]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 168tvY-00067Y-00 for ; Tue, 27 Nov 2001 20:54:20 -0500 Received: from [144.137.145.148] (helo=hotmail.com) by delysid.gnu.org with smtp (Exim 3.20 #1) id 168tv0-0001l8-00 for ; Tue, 27 Nov 2001 20:53:55 -0500 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=200111272028=" To: classpathx-crypto@gnu.org From: HBG42@hotmail.com X-Mailer: 48F7820E.4886299B.a077b1eee344268d1452a934c9dd02e7 Organization: Home Business Group Message-Id: Date: Tue, 27 Nov 2001 20:53:55 -0500 Subject: [Classpathx-crypto] Did You Get Your Check? Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: --=200111272028= Content-Type: text/plain;charset=US-ASCII Dear Friends & Future Millionaire: Invest in technology that will make you money. AS SEEN ON NATIONAL TV: Are you making over half million dollars every 4 to 5 months from your home? A one time investment of only $25 U.S. Dollars get's you on the road to financial success. ALL THANKS TO THE COMPUTER AGE AND THE INTERNET ! =========================================== BE A MILLIONAIRE LIKE OTHERS WITHIN A YEAR!!! Before you say ''Bull'', please read the following. This is the letter you have been hearing about on the news lately. Due to the popularity of this letter on the Internet, a national weekly news program recently devoted an entire show to the investigation of this program described below, to see if it really can make people money. The show also investigated whether or not the program was legal. Their findings proved once and for all that there are ''absolutely NO Laws prohibiting the participation in the program and if people can follow the simple instructions, they are bound to make some mega bucks with only$25 out of pocket cost''. DUE TO THE RECENT INCREASE OF POPULARITY & RESPECT THIS PROGRAM HAS ATTAINED, IT IS CURRENTLY WORKING BETTER THAN EVER. This is what one had to say: ''Thanks to this profitable opportunity. I was approached many times before but each time I passed on it. I am so glad I finally joined just to see what one could expect in return for the minimal effort and money required. To my astonishment, I received a total of $610,470.00 in 21 weeks, with money still coming in." Pam Hedland, Fort Lee, New Jersey. ============================================ Here is another testimonial: "This program has been around for a long time but I never believed in it. But one day when I received this again in the mail I decided to gamble my $25 on it. I followed the simple instructions and walaa ..... 3 weeks later the money started to come in. First month I only made $240.00 but the next 2 months after that I made a total of $290,000.00. So far, in the past 8 months by re-entering the program, I have made over $710,000.00 and I am playing it again. The key to success in this program is to follow the simple steps and NOT change anything.'' More testimonials later but first, =PRINT THIS NOW FOR YOUR FUTURE REFERENCE= $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ If you would like to make at least $500,000 every 4 to 5 months easily and comfortably, please read the following...THEN READ IT AGAIN and AGAIN!!! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ FOLLOW THE SIMPLE INSTRUCTIONS BELOW AND YOUR FINANCIAL DREAMS WILL COME TRUE, GUARANTEED! INSTRUCTIONS: =====Order all 5 reports shown on the list below ===== For each report, send $5 CASH, THE NAME & NUMBER OF THE REPORT YOU ARE ORDERING and YOUR E-MAIL ADDRESS to the person whose name appears ON THAT LIST next to the report. MAKE SURE YOUR RETURN ADDRESS IS ON YOUR ENVELOPE TOP LEFT CORNER in case of any mail problems. === When you place your order, make sure you order each of the 5 reports. You will need all 5 reports so that you can save them on your computer and resell them. YOUR TOTAL COST $5 X 5=$25.00. Within a few days you will receive, vie e-mail, each of the 5 reports from these 5 different individuals. Save them on your computer so they will be accessible for you to send to the 1,000's of people who will order them from you. Also make a floppy of these reports and keep them on your desk in case something happens to your computer. IMPORTANT - DO NOT alter the names of the people who are listed next to each report, or their sequence on the list, in any way other than what is instructed below in step '' 1 through 6 '' or you will loose out on majority of your profits. Once you understand the way this works, you will also see how it does not work if you change it. Remember, this method has been tested, and if you alter, it will NOT work !!! People have tried to put their friends/relatives names on all five thinking they could get all the money. But it does not work this way. Believe us, we all have tried to be greedy and then nothing happened. So Do Not try to change anything other than what is instructed. Because if you do, it will not work for you. Remember, honesty reaps the reward!!! 1.... After you have ordered all 5 reports, take this advertisement and REMOVE the name & address of the person in REPORT # 5. This person has made it through the cycle and is no doubt counting their fortune. 2.... Move the name & address in REPORT # 4 down TO REPORT # 5. 3.... Move the name & address in REPORT # 3 down TO REPORT # 4. 4.... Move the name & address in REPORT # 2 down TO REPORT # 3. 5.... Move the name & address in REPORT # 1 down TO REPORT # 2 6.... Insert YOUR name & address in the REPORT # 1 Position. PLEASE MAKE SURE you copy every name & address ACCURATELY! ============================================ **** Take this entire letter, with the modified list of names, and save it on your computer. DO NOT MAKE ANY OTHER CHANGES. Save this on a disk as well just in case if you loose any data. To assist you with marketing your business on the internet, the 5 reports you purchase will provide you with invaluable marketing information which includes how to send bulk e- mails legally, where to find thousands of free classified ads and much more. There are 2 Primary methods to get this venture going: METHOD # 1: BY SENDING BULK E-MAIL LEGALLY ============================================ Let's say that you decide to start small, just to see how it goes, and we will assume You and those involved send out only 5,000 e-mails each. Let's also assume that the mailing receive only a 0.2% response (the response could be much better but lets just say it is only 0.2%. Also many people will send out hundreds of thousands e-mails instead of only 5,000 each). Continuing with this example, you send out only 5,000 e- mails. With a 0.2% response, that is only 10 orders for report # 1. Those 10 people responded by sending out 5,000 e-mail each for a total of 50,000. Out of those 50,000 e-mails only 0.2% responded with orders. That's=100 people responded and ordered Report # 2. Those 100 people mail out 5,000 e-mails each for a total of 500,000 e-mails. The 0.2% response to that is 1000 orders for Report # 3. Those 1000 people send out 5,000 e-mails each for a total of 5 million e-mails sent out. The 0.2% response to that is 10,000 orders for report #4. Those 10,000 people send out 5,000 e- mails each for a total of 50,000,000 (50 million) e-mails. The 0.2% response to that is 100,000 orders for Report # 5. THAT'S 100,000 ORDERS TIMES $5 EACH=$500,000.00 (half million). Your total income in this example is: 1..... $50 + 2..... $500 + 3.....$5,000 + 4 . $50,000 + 5..... $500,000 ........ Grand Total=$555,550.00 NUMBERS DO NOT LIE. GET A PENCIL & PAPER AND FIGURE OUT THE WORST POSSIBLE RESPONSES AND NO MATTER HOW YOU CALCULATE IT, YOU WILL STILL MAKE A LOT OF MONEY ! ============================================ REMEMBER FRIEND, THIS IS ASSUMING ONLY 10 PEOPLE ORDERING OUT OF 5,000 YOU MAILED TO. Dare to think for a moment what would happen if everyone or half or even one 4th of those people mailed 100,000e-mails each or more? There are over 150 million people on the Internet worldwide and counting. Believe me, many people will do just that, and more! METHOD # 2 : BY PLACING FREE ADS ON THE INTERNET ============================================ Advertising on the net is very very inexpensive and there are hundreds of FREE places to advertise. Placing a lot of free ads on the Internet will easily get a larger response. We strongly suggest you start with Method # 1 and METHOD # 2 as you go along. For every $5 you receive, all you must do is e-mail them the Report they ordered. That's it. Always provide same day service on all orders. This will guarantee that the e-mail they send out, with your name and address on it, will be prompt because they can not advertise until they receive the report. =========== AVAILABLE REPORTS ============ ORDER EACH REPORT BY ITS NUMBER & NAME ONLY. Notes: Always send $5 cash (U.S. CURRENCY) for each Report. Checks NOT accepted. Make sure the cash is concealed by wrapping it in at least 2 sheets of paper. On one of those sheets of paper, Write the NUMBER & the NAME of the Report you are ordering, YOUR E-MAIL ADDRESS and your name and postal address. PLACE YOUR ORDER FOR THESE REPORTS NOW : ============================================ REPORT # 1: "The Insider's Guide to Advertising for Free on the Net" Order Report #1 from: Anthony Hayes P.O.Box 111 Ashmore, Queensland Australia 4214 __________________________________________________ REPORT # 2: "The Insider's Guide to Sending Bulk e-mail on the Net" Order Report # 2 from: WCF Unit 1002 / 43 Garfield Terrace Surfers Paradise, Queensland Australia 4217 _________________________________________________ REPORT # 3: "Secret to Multilevel Marketing on the Net" Order Report # 3 from : Daniel Lee 306 Spring Street Hendersonville, NC 28739, USA __________________________________________________ REPORT # 4: "How to Become a Millionaire Utilizing MLM & the Net" Order Report # 4 from: Mike Manegold Sonnenbergstrasse 40 CH-8800, Thalwil (Switzerland). _______________________________________________ REPORT #5: "How to Send Out one Million e-mails for Free" Order Report # 5 from: M.G. 7143 Hillside Dr. W. Bloomfield, MI 48322-2847, USA __________________________________________________ $$$$$$$$$ YOUR SUCCESS GUIDELINES $$$$$$$$$$$ Follow these guidelines to guarantee your success: === If you do not receive at least 10 orders for Report #1 within 2 weeks, continue sending e-mails until you do. === After you have received 10 orders, 2 to 3 weeks after that you should receive 100 orders or more for REPORT # 2. If you did not, continue advertising or sending e-mails until you do. === Once you have received 100 or more orders for Report # 2, YOU CAN RELAX, because the system is already working for you, and the cash will continue to roll in ! THIS IS IMPORTANT TO REMEMBER: Every time your name is moved down on the list, you are placed in front of a Different report. You can KEEP TRACK of your PROGRESS by watching which report people are ordering from you. IF YOU WANT TO GENERATE MORE INCOME SEND ANOTHER BATCH OF E-MAILS AND START THE WHOLE PROCESS AGAIN. There is NO LIMIT to the income you can generate from this business !!! ============================================ FOLLOWING IS A NOTE FROM THE ORIGINATOR OF THIS PROGRAM: You have just received information that can give you financial freedom for the rest of your life, with NO RISK and JUST A LITTLE BIT OF EFFORT. You can make more money in the next few weeks and months than you have ever imagined. Follow the program EXACTLY AS INSTRUCTED. Do Not change it in any way. It works exceedingly well as it is now. Remember to e-mail a copy of this exciting report after you have put your name and address in Report #1 and moved others to #2 ...........# 5 as instructed above. One of the people you send this to may send out 100,000 or more e-mails and your name will be on every one of them. Remember though, the more you send out the more potential customer you will reach. So my friend, I have given you the ideas, information, materials and opportunity to become financially independent. IT IS UP TO YOU NOW ! ======== MORE TESTIMONIALS ============ "My name is Mitchell. My wife, Jody and I live in Chicago. I am an accountant with a major U.S. Corporation and I make pretty good money. When I received this program I grumbled to Jody about receiving ''junk mail''. I made fun of the whole thing, spouting my knowledge of the population and percentages involved. I ''knew'' it wouldn't work. Jody totally ignored my supposed intelligence and few days later she jumped in with both feet. I made merciless fun of her, and was ready to lay the old ''I told you so'' on her when the thing didn't work. Well, the laugh was on me! Within 3 weeks she had received 50 responses. Within the next 45 days she had received total $ 147,200.00 ........... all cash! I was shocked. I have joined Jody in her ''hobby''. Mitchell Wolf C.P.A., Chicago, Illinois ========================================== ''Not being the gambling type, it took me several weeks to make up my mind to participate in this plan. But conservative that I am, I decided that the initial investment was so little that there was just no way that I wouldn't get enough orders to at least get my money back''. '' I was surprised when I found my medium size post office box crammed with orders. I made $319,210.00 in the first 12 weeks. The nice thing about this deal is that it does not matter where people live. There simply isn't a better investment with a faster return and so big." Dan Sondstrom, Alberta, Canada =========================================== ''I had received this program before. I deleted it, but later I wondered if I should have given it a try. Of course, I had no idea who to contact to get another copy, so I had to wait until I was e-mailed again by someone else.........11 months passed then it luckily came again...... I did not delete this one! I made more than $490,000 on my first try and all the money came within 22 weeks." Susan De Suza, New York, N.Y. ============================================ ''It really is a great opportunity to make relatively easy money with little cost to you. I followed the simple instructions carefully and within 10 days the money started to come in. My first month I made $20,560.00 and by the end of third month my total cash count was $362,840.00. Life is beautiful, Thanks to the internet.". Fred Dellaca, Westport, New Zealand ============================================ ORDER YOUR REPORTS TODAY AND GET STARTED ON 'YOUR' ROAD TO FINANCIAL FREEDOM ! =========================================== If you have any questions of the legality of this program, contact the Office of Associate Director for Marketing Practices, Federal Trade Commission, Bureau of Consumer Protection, Washington, D.C. (Note: To avoid delays make sure appropriate postage to Canada, USA, or Europe is applied) -=-=-=-=--=-=-==-=Remove Instructions=-=-=-=-=-=-=--=-= ************************************************* Do not reply to this message - To be removed from future mailings: mailto:areyousure@angelfire.com?Subject=Remove --=200111272028=-- From jaroldh@surfbest.net Fri Nov 30 18:08:14 2001 Received: from server1.safepages.com ([216.127.146.3]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 169wlR-0002Es-00; Fri, 30 Nov 2001 18:08:13 -0500 Received: from racingseat.com (unknown [65.138.132.142]) by server1.safepages.com (Postfix) with ESMTP id C86B75E02; Fri, 30 Nov 2001 23:07:48 +0000 (GMT) X-Sender: jaroldh@surfbest.net From: Jarrold Harris To: "Mortgage Borrower" Date: Fri, 30 Nov 2001 15:10:02 -0800 Reply-To: jaroldh@surfbest.net MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_001__17472363_54602.61" Message-Id: <20011130230748.C86B75E02@server1.safepages.com> Subject: [Classpathx-crypto] Need a Home Loan? Let Us Help! Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a Multipart MIME message. ------=_NextPart_000_001__17472363_54602.61 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit ------=_NextPart_000_001__17472363_54602.61 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: base64 DQoNCjxIVE1MPg0KDQo8aGVhZD4NCjxNRVRBIEhUVFAtRVFVSVY9IkNvbnRlbnQtVHlwZSIg Q09OVEVOVD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+DQo8IURPQ1RZUEUgSFRN TCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPg0KPFRJ VExFPkZyZWUgUmF0ZSBRdW90ZTwvVElUTEU+DQo8TUVUQSBjb250ZW50PSJ0ZXh0L2h0bWw7 IGNoYXJzZXQ9aXNvLTg4NTktMSIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+PFhNRVRBIA0K Y29udGVudD0iTW96aWxsYS80LjcgW2VuXSAoV2luOTg7IEkpIFtOZXRzY2FwZV0iIG5hbWU9 IkdFTkVSQVRPUiI+DQo8TUVUQSBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDQuMCIg bmFtZT1HRU5FUkFUT1I+DQo8U1RZTEU+PC9TVFlMRT4NCjwvSEVBRD4NCjxCT0RZIGJhY2tn cm91bmQ9aHR0cDovLzM1NzAxOTQ2MjIvbW9uZXlfZ3IuanBnIGJnQ29sb3I9I2ZmZmZmZiBi Z3Byb3BlcnRpZXM9ImZpeGVkIj4NCjxESVYgc3R5bGU9IkZPTlQ6IDEwcHQgYXJpYWwiPg0K PERJVj4mbmJzcDs8L0RJVj48L0RJVj4NCjxESVY+PEJSPjwvRElWPg0KPEJSPg0KDQoNCjxQ IGFsaWduPWNlbnRlcj48ZW0+PGI+PGZvbnQgY29sb3I9IiNmZjAwMDAiIHNpemU9IjYiIGZh Y2U9ImFyaWFsIj4mcXVvdDtSZWZpbmFuY2UgWW91cg0KQ3VycmVudCBNb3J0Z2FnZSBXaGls ZSBSYXRlcyBBcmUgTE9XISEmcXVvdDs8L2ZvbnQ+PC9iPjwvZW0+PC9QPg0KPE1BUlFVRUU+ PGk+PGI+PEZPTlQgc2l6ZT00IGNvbG9yPSMwMDAwZmY+SE9NRSBFUVVJVFkgTE9BTlMgKioq IEpVTUJPIExPQU5TICoqKiBIT01FIElNUFJPVkVNRU5UIExPQU5TICoqKiANCiAgICAgIERF QlQgQ09OU09MSURBVElPTiBMT0FOUyAqKiogUkVGSU5BTkNFIExPQU5TICoqKiBBTEwgQVJF IEFWQUlMQUJMRSBUTyBZT1UgKioqIFJBVEVTIEFTIExPVyBBUyANCiAgICAgIDMuOTUlPC9m b250PjwvYj48L2k+PC9tYXJxdWVlPg0KPEJSPjxCUj4NCjxwIGFsaWduPSJjZW50ZXIiPjxi Pjxmb250IHNpemU9IjQiPk1vcnRnYWdlIFJhdGVzIEFyZSBTbyBMb3chJm5ic3A7PC9mb250 PjwvYj48L3A+DQo8cCBhbGlnbj0iY2VudGVyIj48Yj48Zm9udCBzaXplPSI0Ij5Zb3UgQ2Fu IFNhdmUgVGhvdXNhbmRzIE9mIERvbGxhcnMgQnkgVGFraW5nDQpBZHZhbnRhZ2UgTm93ITwv Zm9udD48L2I+PC9wPg0KPFAgYWxpZ249Y2VudGVyPjxFTT48Qj48Rk9OVCBjb2xvcj0jZmYw MDAwIHNpemU9NT4mcXVvdDtXRSBBUkUgQU4gQVNTT0NJQVRJT04gT0YNCk1PUlRHQUdFIEJS T0tFUlMgQU5EIExFTkRFUlMgPC9GT05UPjwvQj48L0VNPjwvUD4NCjxQIGFsaWduPWNlbnRl cj48RU0+PEI+PEZPTlQgY29sb3I9I2ZmMDAwMCBzaXplPTU+V0lUSCBUSEUgQkVTVCBSQVRF UyBBTkQgVEhFIExPV0VTVA0KQ09TVFMhJnF1b3Q8L0ZPTlQ+PC9CPjwvRU0+PC9QPg0KPHAg YWxpZ249ImNlbnRlciI+Jm5ic3A7PC9wPg0KPFAgYWxpZ249Y2VudGVyPjxGT05UIGNvbG9y PSMwMDAwZmYgc2l6ZT00PjxCPldlJm5ic3A7aGF2ZSB0aG91c2FuZHMgb2YgbG9hbiANCnBy b2dyYW1zIHRocm91Z2ggaHVuZHJlZHMgb2YgbGVuZGVycyE8QlI+PC9CPjwvRk9OVD48Rk9O VCBzaXplPTM+PC9GT05UPjwvUD4NCjxQIGFsaWduPWNlbnRlcj48U1RST05HPjxGT05UIHNp emU9NT5Zb3UgY2FuIGNob29zZSBmcm9tJm5ic3A7IkFkanVzdGFibGUgUmF0ZQ0KTW9ydGdh Z2VzIA0KYXMgbG93IGFzIDMuOTUlJnF1b3Q7PC9GT05UPjwvU1RST05HPjwvUD4NCjxQIGFs aWduPWNlbnRlcj48U1RST05HPjxGT05UIHNpemU9NT5hbmQmbmJzcDsiRml4ZWQgUmF0ZSBN b3J0Z2FnZXMgYXMgbG93IGFzDQo1Ljc1JSZuYnNwOzwvRk9OVD48L1NUUk9ORz48L1A+DQo8 UCBhbGlnbj1jZW50ZXI+PFNUUk9ORz48Rk9OVCBzaXplPTU+YWxsIHdpdGggdGhlIGxvd2Vz dCBjb3N0cyBpbiB0aGUNCk5hdGlvbiEmcXVvdDs8L0ZPTlQ+PC9TVFJPTkc+PEJJRz48QklH PjxGT05UIGNvbG9yPSNmZjAwMDA+KjwvRk9OVD48L0JJRz48L0JJRz48L1A+DQo8UCBhbGln bj1jZW50ZXI+PEZPTlQgDQpzaXplPTU+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiZxdW90Ozxi PjxpPllPVSBDQU4gPHU+QlVZIERPV04gWU9VUiBJTlRFUkVTVCBSQVRFPC91Pg0KVE88L2k+ PC9iPjwvZm9udD48L0ZPTlQ+PC9QPg0KPFAgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPSIj RkYwMDAwIiBzaXplPSI1Ij48Yj48aT5BUyBMT1cgQVMgWU9VIENBTg0KQUZGT1JEISZxdW90 OzwvaT48L2I+PC9mb250PjxGT05UIA0Kc2l6ZT01PjxCUj48L0ZPTlQ+PEZPTlQgc2l6ZT0z PjwvRk9OVD48L1A+DQo8UCBhbGlnbj1jZW50ZXI+PEZPTlQgc2l6ZT0rMD48Rk9OVCBjb2xv cj0jMDAwMGZmIHNpemU9Mj48QklHPjxCSUc+PEZPTlQgDQpjb2xvcj0jZmYwMDAwIHNpemU9 NT4qPC9GT05UPjwvQklHPjxTVFJPTkc+QWxsIHJhdGVzIGFyZSBiYXNlZCBvbiANCnF1YWxp ZmljYXRpb248L1NUUk9ORz4hPC9CSUc+PC9GT05UPjwvRk9OVD48L1A+DQo8UCBhbGlnbj1j ZW50ZXI+PEZPTlQgc2l6ZT0rMD48Rk9OVCBzaXplPTI+PEJJRz48L0JJRz48L0ZPTlQ+PEZP TlQgDQpjb2xvcj0jMDAwMGZmPjxGT05UIGZhY2U9QXJpYWw+PEZPTlQgc2l6ZT0yPjxBIGhy ZWY9Imh0dHA6Ly8zNTcwMTk0NjIyIiANCnRhcmdldD1fYmxhbms+PEZPTlQgc2l6ZT01PjxT VFJPTkc+PEZPTlQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5DbGljayBoZXJlIGZvciANCnlv dXIgPC9GT05UPjxGT05UIHNpemU9Nj48Rk9OVCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxF TT4iRlJFRSBSQVRFIA0KUVVPVEUiITwvRU0+PC9GT05UPjwvRk9OVD48L1NUUk9ORz48L0ZP TlQ+PC9BPjwvRk9OVD48L0ZPTlQ+PC9GT05UPjwvRk9OVD48L1A+DQo8UCBhbGlnbj1sZWZ0 PiZuYnNwOzwvUD4NCjxQIGFsaWduPWxlZnQ+PGk+PGI+PGZvbnQgZmFjZT0iQXJpYWwiIHNp emU9IiswIj5DTElDSyBPTiBMT0FOUyBCRUxPVyBGT1IgWU9VUg0KRlJFRSBBUFBMSUNBVElP TiE8L2ZvbnQ+PC9iPjwvaT48Rk9OVCBmYWNlPUFyaWFsPjxCUj48L0ZPTlQ+PC9QPg0KPFAg YWxpZ249bGVmdD48U1RST05HPjxFTT48QSBocmVmPSJodHRwOi8vMzU3MDE5NDYyMiIgDQp0 YXJnZXQ9X2JsYW5rPjxmb250IHNpemU9IjUiIGNvbG9yPSIjODAwMDgwIj5QdXJjaGFzZSBM b2FuczwvZm9udD48L0E+IDxGT05UIHNpemU9NT4NCjwvRk9OVD4gPC9FTT48Rk9OVCANCnNp emU9ND4tIDxFTT5UaG91c2FuZHMgb2YgcHJvZ3JhbXMgDQpmb3IgRmlyc3QgTW9ydGdhZ2Vz ITwvRU0+PC9GT05UPjxJPjwvST48L1NUUk9ORz48ST48Rk9OVCANCmNvbG9yPSMwMDAwMDA+ PEJSPjxCUj48L0ZPTlQ+PC9JPjxBIGhyZWY9Imh0dHA6Ly8zNTcwMTk0NjIyIiBfYmxhbms/ PjxFTT48U1RST05HPjxmb250IHNpemU9IjUiIGNvbG9yPSIjODAwMDgwIj5SZWZpbmFuY2Ug TG9hbnM8L2ZvbnQ+PC9TVFJPTkc+PC9FTT48ST48Rk9OVCANCmNvbG9yPSMwMDAwMDAgc2l6 ZT0yPiA8L0ZPTlQ+PC9JPjwvQT48ST48Rk9OVCBjb2xvcj0jMDAwMDAwIHNpemU9ND4tIDxC PlJlZHVjZSB5b3VyIA0KbW9udGhseSBwYXltZW50cyBhbmQ8L0ZPTlQ+PEZPTlQgY29sb3I9 IzAwMDAwMCBzaXplPTI+IDwvRk9OVD48Rk9OVCANCmNvbG9yPSNmZjAwMDAgc2l6ZT01Pkdl dCBDYXNoIEJhY2shPC9GT05UPjwvQj48Rk9OVCBjb2xvcj0jMDAwMDAwIHNpemU9ND4gDQo8 L0ZPTlQ+PEZPTlQgY29sb3I9IzAwMDAwMCBzaXplPTM+PEJSPjxCUj48L0ZPTlQ+PC9JPjxB IA0KaHJlZj0iaHR0cDovLzM1NzAxOTQ2MjIiIHRhcmdldD1fYmxhbms+PGZvbnQgY29sb3I9 IiM4MDAwODAiPjxFTT48Qj48Rk9OVCBzaXplPTU+U2Vjb25kIA0KTW9ydGdhZ2VzPC9GT05U PjwvQj48L0VNPjxJPjxGT05UIHNpemU9Mz4gPC9GT05UPjwvST4NCjwvZm9udD4gPC9BPjxJ PjxGT05UIGNvbG9yPSMwMDAwMDAgc2l6ZT0zPiAtIDwvRk9OVD48Qj48Rk9OVCANCmNvbG9y PSMwMDAwMDAgc2l6ZT00PldlIGNhbiBoZWxwIHlvdSBnZXQgZnJvbSA8L0ZPTlQ+PEZPTlQg Y29sb3I9I2ZmMDAwMCANCnNpemU9NT45MCU8L0ZPTlQ+PEZPTlQgY29sb3I9IzAwMDAwMCBz aXplPTQ+IHVwIHRvIDwvRk9OVD48Rk9OVCBjb2xvcj0jZmYwMDAwIA0Kc2l6ZT01PjEyNSU8 L0ZPTlQ+PEZPTlQgY29sb3I9IzAwMDAwMCBzaXplPTQ+IG9mIHlvdXIgaG9tZXMgdmFsdWUh IChyYXRpb3MgdmFyeSANCmJ5IHN0YXRlKTwvRk9OVD48L0I+PC9QPg0KPFAgYWxpZ249bGVm dD48QSBocmVmPSJodHRwOi8vMzU3MDE5NDYyMiIgDQp0YXJnZXQ9X2JsYW5rPjxCPjxmb250 IHNpemU9IjUiIGNvbG9yPSIjODAwMDgwIj5EZWJ0IENvbnNvbGlkYXRpb248L2ZvbnQ+PC9C PjwvQT48Rk9OVCBjb2xvcj0jMDAwMDAwIHNpemU9Mz4gPEZPTlQgY29sb3I9IzAwMDAwMCBz aXplPTQ+LSANCjxCPkNvbWJpbmUgPC9GT05UPjxGT05UIGNvbG9yPSNmZjAwMDAgc2l6ZT01 PmFsbDwvRk9OVD48Rk9OVCBjb2xvcj0jMDAwMDAwIA0Kc2l6ZT00PiB5b3VyIGJpbGxzIGlu dG8gPC9GT05UPjxGT05UIGNvbG9yPSNmZjAwMDAgc2l6ZT01Pk9uZSBMb3cgTW9udGhseSAN ClBheW1lbnQhPC9GT05UPjwvQj48QlI+PEJSPjwvRk9OVD48Qj48QSANCmhyZWY9Imh0dHA6 Ly8zNTcwMTk0NjIyIiB0YXJnZXQ9X2JsYW5rPjxmb250IHNpemU9IjUiIGNvbG9yPSIjODAw MDgwIj5GaXJzdCBUaW1lIEhvbWUgQnV5ZXJzPC9mb250PjwvQT48Rk9OVCBjb2xvcj0jMDAw MDAwIHNpemU9Mz4gLSANCjxGT05UIGNvbG9yPSMwMDAwMDAgc2l6ZT00PldlIGNhbiBoZWxw IHlvdSBidXkgd2l0aCA8Rk9OVCBjb2xvcj0jZmYwMDAwIA0Kc2l6ZT01PkxvdzwvRk9OVD48 L0ZPTlQ+PEZPTlQgY29sb3I9I2ZmMDAwMCBzaXplPTU+IE1vbmV5IERvd248L0ZPTlQ+PEZP TlQgDQpjb2xvcj0jMDAwMDAwIHNpemU9ND4sIGFuZCBldmVuIDwvRk9OVD48Rk9OVCBjb2xv cj0jZmYwMDAwIHNpemU9NT5HZXQgQ2FzaCANCkJhY2shPC9GT05UPjwvRk9OVD48L0I+PC9Q PjwvST4NCjxQIGFsaWduPWNlbnRlcj48QklHPjxCSUc+PEZPTlQgY29sb3I9I2ZmMDAwMD4q PC9GT05UPjwvQklHPkFsbCByYXRlcyBhcmUgYmFzZWQgDQpvbiBxdWFsaWZpY2F0aW9uITwv QklHPjwvUD4NCjxQIGFsaWduPWNlbnRlcj48Qj48ST48Rk9OVCBjb2xvcj0jMDAwMDAwIHNp emU9Nj5XZSBoYXZlIHByb2dyYW1zIGZvciANCjwvRk9OVD48Rk9OVCBjb2xvcj0jZmYwMDAw IHNpemU9Nj48VT5FVkVSWTwvVT48L0ZPTlQ+PEZPTlQgY29sb3I9IzAwMDAwMCBzaXplPTY+ IA0KY3JlZGl0IHNpdHVhdGlvbiE8L0ZPTlQ+PEJSPjxCUj48QSBocmVmPSJodHRwOi8vMzU3 MDE5NDYyMiIgdGFyZ2V0PV9ibGFuaz48Rk9OVCANCmNvbG9yPSMwMDAwZmYgc2l6ZT01PkNs aWNrIGhlcmUgZm9yIHlvdXIgRlJFRSBSQVRFIFFVT1RFITwvRk9OVD48L0E+PC9JPjwvQj48 L1A+DQo8UCBhbGlnbj1sZWZ0PjxGT05UIGNvbG9yPSMwMDgwMDA+PFNUUk9ORz4mcXVvdDtU aGlzIG1lc3NhZ2UgaXMgYmVpbmcgc2VudCB0bw0KeW91IGluIGNvbXBsaWFuY2Ugd2l0aCZu YnNwO0JpbGwgUy4gMTYxOCBUaXRsZSBJSUkgcGFzc2VkIGJ5IHRoZSAxMDV0aCBVUw0KQ29u Z3Jlc3MsIHdoaWNoIHN0YXRlcyB0aGF0IHRoaXMgbGV0dGVyIGNhbiBub3QgYmUgY29uc2lk ZXJlZCBzcGFtIGFzIGxvbmcgYXMgd2UNCmluY2x1ZGUgKDEpIFZhbGlkIENvbnRhY3QgSW5m b3JtYXRpb24gYW5kICgyKSZuYnNwO2Egd2F5IHRvIGJlIHJlbW92ZWQgZnJvbSBhbnkNCmZ1 cnRoZXIgdHJhbnNtaXNzaW9ucyBhdCBubyBjb3N0IHRvIHlvdSBieSBzdWJtaXR0aW5nIGEg cmVxdWVzdCB0byBiZQ0KcmVtb3ZlZC4mcXVvdDsgLiA8YSBocmVmPSJodHRwOi8vMzU3MDE5 NDYyMi9yZW1vdmUuaHRtIj5DbGljayBIZXJlIHRvIFNlbmQgYSBSZW1vdmUgUmVxdWVzdDwv YT4uDQomcXVvdDtXZSBob25vciBhbGwgcmVtb3ZlIGVtYWlsIGFkZHJlc3MgcmVxdWVzdHMm bmJzcDtpbW1lZGlhdGVseS4mcXVvdDs8L1NUUk9ORz48L0ZPTlQ+PC9QPjwvQk9EWT48L0hU TUw+ ------=_NextPart_000_001__17472363_54602.61-- From nferrier@tapsellferrier.co.uk Mon Dec 03 06:49:28 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16ArbE-0001FP-00 for ; Mon, 03 Dec 2001 06:49:28 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16Arpf-0000uO-00; Mon, 03 Dec 2001 12:04:23 +0000 Message-ID: <008701c17bf0$8a7cd990$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Raif S. Naffah" Cc: "Olivier Louchart-Fletcher" , References: <5.0.0.25.1.20011203223737.00a4d800@mail.syd.fl.net.au> Date: Mon, 3 Dec 2001 11:49:17 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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 Subject: [Classpathx-crypto] Re: gnu.crypto web page Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > i would appreciate it if you can have a look at the gnu.crypto web page > (with almost all related links) to check if it's conformant with GNU and > Classpathx norms. It's really well designed, I like it. Normally, GNU prefer to use just the HTML 2.0 standard. This ensures that pages can be read even on text mode browsers like lynx. I notice you've used DIVs and so on... any chance you could convert these to something a bit more HTML 2.0? If you can't I suggest you do this: - create a directory for crypto on the classpathX website (follow the example of JAXP). - subdivide the webpage into separate sections. - ensure the main crypto index page is HTML 2.0 compliant. > i didnt check in the javadoc api yet, nor the release. the javadoc stuff, > will go in the api/ folder. i'm not quite sure yet where the release will > go or if a copy should be also checked-in with this page. The release will go on the ftp server. If you let me know about when you're ready to release then I will check out your code and build it (as a final sanity check) and put it up on the ftp server. That's why you need a target to produce the tar file (see the gnu coding standards for info). > finally what probably is missing is a link from the classpathx main page to > this one. should i be doing this or should i leave it to you? Leave it to me.. when we've resolved this HTML version issue I'll put the link in. This is all coming together really well! Well done! Nic From nferrier@tapsellferrier.co.uk Mon Dec 03 08:06:34 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16Asnq-0006X5-00 for ; Mon, 03 Dec 2001 08:06:34 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16At27-0000w4-00; Mon, 03 Dec 2001 13:21:24 +0000 Message-ID: <009601c17bfb$4c8532d0$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Raif S. Naffah" Cc: "Olivier Louchart-Fletcher" , References: <5.0.0.25.1.20011203223737.00a4d800@mail.syd.fl.net.au> <5.0.0.25.1.20011203234544.00a59eb0@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] Re: gnu.crypto web page Date: Mon, 3 Dec 2001 13:05:52 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > i got rid of the divs and other artifices i think are not html2.0 > friendly. have a look at it now. Excellent. I'll put the link in from the main page tonight. Nic From nferrier@tapsellferrier.co.uk Mon Dec 03 18:16:31 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16B2K6-0002So-00 for ; Mon, 03 Dec 2001 18:16:31 -0500 Received: from nferrier by tf1.tapsellferrier.co.uk with local (Exim 3.12 #1 (Debian)) id 16B2Yi-000178-00; Mon, 03 Dec 2001 23:31:36 +0000 From: Nic Ferrier To: classpathx-crypto@gnu.org Message-Id: Date: Mon, 03 Dec 2001 23:31:36 +0000 Subject: [Classpathx-crypto] pdf files Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: You guys have a few pdf files on your site. Are there free software tools for reading pdfs? Are there alternatives to pdf files? postscript would be better because there are free software tools for displaying them. Of course, info/TeX would be best. Nic From david-b@pacbell.net Mon Dec 03 23:44:17 2001 Received: from mta5.snfc21.pbi.net ([206.13.28.241]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16B7RI-00018E-00 for ; Mon, 03 Dec 2001 23:44:16 -0500 Received: from krypton ([206.170.7.165]) by mta5.snfc21.pbi.net (iPlanet Messaging Server 5.1 (built May 7 2001)) with SMTP id <0GNS00H57YHQI6@mta5.snfc21.pbi.net> for classpathx-crypto@gnu.org; Mon, 03 Dec 2001 20:44:16 -0800 (PST) Date: Mon, 03 Dec 2001 20:42:44 -0800 From: David Brownell To: classpathx-crypto@gnu.org Message-id: <077501c17c7e$1e444a40$6800000a@brownell.org> MIME-version: 1.0 X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-Mailer: Microsoft Outlook Express 5.50.4133.2400 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT X-Priority: 3 X-MSMail-priority: Normal Subject: [Classpathx-crypto] quick comments on gnu.crypto code Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hi, I recently grabbed a copy of the code. No comments yet on the real guts -- though from the look of it I won't have many complaints, clean and regular crypto code is usually a very good sign! So here's a random set of questions and comments that came to mind as I skimmed what CVS told me. Some peripheral points first leaped out at me: - Coding style ... three space indents? No tabs? And Hungarian "IamAnInterface" notation? Yoiks! I don't like even one of those, sorry. - PDFs in the docs. DocBook XML where possible, please. Though since these are original specs, I suspect that's not a real option. Does CVS need to have those? (I hate TexInfo equally ... DocBook at least turns into good HTML, though the MathML output may be a bit lacking just now.) - javadoc. The links to the PDFs were all broken, and there were no "package.html" files to describe why each package is there and how to use it. - License ... LGPL, not "GPL + library exception". Maybe not an immediate issue, but static linking will increasingly matter. OK, non-peripheral points: functionality. Seems to be a strange selection in this first code drop. - Seems that widely used hashes (MD5, SHA1; maybe MD2) aren't there. - Block ciphers. Again, common ones are not there yet. DES, 3DES-EDE; likely Blowfish; maybe CAST128. - And of less immediate concern (to me), stream ciphers. ARCFOUR, maybe AES in stream modes, and so on. - Looks like the factory always runs selftests on whatever it returns. (gnu.crypto.cipher.CipherFactory). That should be conditionalized on a "if doing development" static final boolean flag, so it normally doesn't happen. - No public key crypto support (RSA, D-H, etc) or digital signature support. Again, why? The PKCS7 doc there strongly suggests it'll be added, along with lots of BER/DER style utilities for cert and public/private key management ... That's just first reactions from a look at the code. Of course I like the fact that ciphers are interfaces and there's none of that silly overhead of a java security layer to slow down calls past abstract method overhead, so from that perspective the API framework starts out immediately on the right foot. And since secure key storage is a quick hack [NOT!] I can easily understand adding it later, after some hardware hooks have been reasonably prototyped. A lot of that is just wondering what the direction for this code is expected to be. I'll assume that what's there is a good start, but since it doesn't do what I'd first need to be done ... :) Not having support for today's most widely used cryptographic algorithms seems to me like it'll be an adoption problem, and I hope the plan is to make sure that several of those algorithms get added before the first (beta?) release. - Dave p.s. I'm not currently subscribed to the list, so please cc me on any responses. From raif@fl.net.au Tue Dec 04 03:01:42 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BAWM-0000Uh-00 for ; Tue, 04 Dec 2001 03:01:42 -0500 Received: from solomon.fl.net.au (a3-p02.syd.fl.net.au [202.181.1.66]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 02926168BA; Tue, 4 Dec 2001 19:01:39 +1100 (EST) Message-Id: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Tue, 04 Dec 2001 19:03:28 +1100 To: Nic Ferrier From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] pdf files Cc: classpathx-crypto@gnu.org In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 11:31 PM 12/3/01 +0000, Nic Ferrier wrote: >You guys have a few pdf files on your site. > >Are there free software tools for reading pdfs? the acrobat reader to my knowledge is free (see ). >Are there alternatives to pdf files? postscript would be better >because there are free software tools for displaying them. these are, to my recollection, files published by the designers of the algorithm, not us. >Of course, info/TeX would be best. of course. today we're using/publishing in html. is that ok? cheers; rsn From raif@fl.net.au Tue Dec 04 03:35:19 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BB2t-0002Jh-00 for ; Tue, 04 Dec 2001 03:35:19 -0500 Received: from solomon.fl.net.au (a3-p02.syd.fl.net.au [202.181.1.66]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 6663016838; Tue, 4 Dec 2001 19:35:15 +1100 (EST) Message-Id: <5.0.0.25.1.20011204191021.00a37d30@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Tue, 04 Dec 2001 19:37:04 +1100 To: David Brownell From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code Cc: classpathx-crypto@gnu.org In-Reply-To: <077501c17c7e$1e444a40$6800000a@brownell.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 08:42 PM 12/3/01 -0800, David Brownell wrote: >Hi, > >I recently grabbed a copy of the code. No comments yet on >the real guts -- though from the look of it I won't have many >complaints, clean and regular crypto code is usually a very >good sign! So here's a random set of questions and comments >that came to mind as I skimmed what CVS told me. > >Some peripheral points first leaped out at me: > > - Coding style ... three space indents? No tabs? And > Hungarian "IamAnInterface" notation? Yoiks! I don't > like even one of those, sorry. > - PDFs in the docs. DocBook XML where possible, > please. Though since these are original specs, I suspect > that's not a real option. Does CVS need to have those? > (I hate TexInfo equally ... DocBook at least turns into > good HTML, though the MathML output may be a > bit lacking just now.) as i mentioned in an earlier message, those documents are published by the designers not us. > - javadoc. The links to the PDFs were all broken, and > there were no "package.html" files to describe why each > package is there and how to use it. these are in the process of being fixed. before the existence of a web page, the idea was to bundle and include them in the release. i'm not doing this anymore; instead they will be pointing to the web page. this has the added advantage of making the release smaller in size. > - License ... LGPL, not "GPL + library exception". Maybe > not an immediate issue, but static linking will increasingly > matter. again. this is being changed 'as-we-speak'. >OK, non-peripheral points: functionality. Seems to be a strange >selection in this first code drop. > > - Seems that widely used hashes (MD5, SHA1; maybe MD2) > aren't there. well; if you have implementations of them that you'd like to contribute then pls ;-) > - Block ciphers. Again, common ones are not there yet. > DES, 3DES-EDE; likely Blowfish; maybe CAST128. same thing. > - And of less immediate concern (to me), stream ciphers. > ARCFOUR, maybe AES in stream modes, and so on. same thing for arc4. i'm expecting, with the first release to start receiving these common algorithms. unfortunately the implementations i've already done for these are under a different license and hence i cannot include them here. somebody else will have to step forward. > - Looks like the factory always runs selftests on whatever > it returns. (gnu.crypto.cipher.CipherFactory). That should > be conditionalized on a "if doing development" static final > boolean flag, so it normally doesn't happen. noted. i'd like to open a discussion thread on 'how we can ensure a degree of trust in the code'. the self-test approach is far from being optimal and hence i'm looking forward to a fruitful brain-storming exchange. > - No public key crypto support (RSA, D-H, etc) or digital > signature support. Again, why? The PKCS7 doc there > strongly suggests it'll be added, along with lots of BER/DER > style utilities for cert and public/private key management ... re. PK algos, the same as above. re. ASN.1 stuff, i'm already the maintainer/sole-programmer of a sourceforge project (cryptix-asn1) that addresses that and is under a BSD-like license (see ). why did i mention this? because all DER related stuff, in gnu.crypto can extend/use classes generated by the cryptix-asn1 library. >That's just first reactions from a look at the code. Of course >I like the fact that ciphers are interfaces and there's none of >that silly overhead of a java security layer to slow down calls >past abstract method overhead, so from that perspective the >API framework starts out immediately on the right foot. good to hear :-) > And >since secure key storage is a quick hack [NOT!] I can easily >understand adding it later, after some hardware hooks have >been reasonably prototyped. i've done in the past (JNI hooks) to plug native implementations of algorithms with the first jce beta with an open-source project, but that code never got published. the justification at the time was that pure java code was as fast, and in some instances faster, than using the native code. while this is true if you have a choice between the two, i take your point that sometimes you dont. i will add that to the TODO list. >A lot of that is just wondering what the direction for this code >is expected to be. I'll assume that what's there is a good start, >but since it doesn't do what I'd first need to be done ... :) i hoped the README explained where we're going. this is the start. the next step is to build the adapters that will allow this library to _also_ work the jca/jce way hence offering programmers a _choice_. i'm confident that people/developers will join in, contributing implementations of the "every-day" algorithms soon. in the meantime if you and/or others know of the existence of java implementations out there of those algorithms with a licence that would allow to re-work them under the XGPL i'm happy to do that myself. >Not having support for today's most widely used cryptographic >algorithms seems to me like it'll be an adoption problem, and I >hope the plan is to make sure that several of those algorithms >get added before the first (beta?) release. my hope is that contributors will come forward _when_ it is released. i'm counting on the "snowball" effect :-) cheers; rsn >- Dave > >p.s. I'm not currently subscribed to the list, so please cc me > on any responses. From olivier@zipworld.com.au Tue Dec 04 06:28:54 2001 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16BDkr-0006Vz-00 for ; Tue, 04 Dec 2001 06:28:54 -0500 Received: from tournesol.malabar.au (ppp71.dyn71.pacific.net.au [202.7.71.71]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id WAA02512; Tue, 4 Dec 2001 22:28:43 +1100 Received: from olivier by tournesol.malabar.au with local (Exim 3.32 #1 (Debian)) id 16BDfo-0000Pj-00; Tue, 04 Dec 2001 22:23:40 +1100 Date: Tue, 4 Dec 2001 22:23:40 +1100 To: Nic Ferrier Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] pdf files Message-ID: <20011204222340.C1151@zipworld.com.au> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.23i From: Olivier LF Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Mon, Dec 03, 2001 at 11:31:36PM +0000, Nic Ferrier wrote: > > You guys have a few pdf files on your site. > > Are there free software tools for reading pdfs? > > Are there alternatives to pdf files? postscript would be better > because there are free software tools for displaying them. > Ghostscript can read both ps and pdf files. All GNU/Linux system seams to have it with a handfull of front ends, "gnome-gv" to cite only one. pdf are a lot smaller that ps, that's at least an advantage also gzipped postscripts are about the same size as pdf. > Of course, info/TeX would be best. I'd like to look at docbook. I've used LaTeX for years but I'd rather investigate docbook. Do you have any experience with it? I am quite sure I read somewhere that gcj as some tools to convert javadoc to texinfo, have you heard of that? Olivier -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From nferrier@tapsellferrier.co.uk Tue Dec 04 06:36:18 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BDs1-000710-00 for ; Tue, 04 Dec 2001 06:36:17 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BE6U-0001Kv-00; Tue, 04 Dec 2001 11:51:14 +0000 Message-ID: <002e01c17cb7$da22fcf0$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Nic Ferrier" , "Raif S. Naffah" Cc: References: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] pdf files Date: Tue, 4 Dec 2001 11:36:01 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > >You guys have a few pdf files on your site. > >Are there free software tools for reading pdfs? > > the acrobat reader to my knowledge is free (see > ). No. The acrobat reader is free as in beer. I meant free-software. > >Are there alternatives to pdf files? postscript would be better > >because there are free software tools for displaying them. > > these are, to my recollection, files published by the designers of the > algorithm, not us. What are the redistribution terms? You may not be able to keep these on the site, linking to them elsewhere might be ok though. Nic From nferrier@tapsellferrier.co.uk Tue Dec 04 06:40:43 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BDwI-0007HX-00 for ; Tue, 04 Dec 2001 06:40:42 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BEAv-0001L1-00; Tue, 04 Dec 2001 11:55:49 +0000 Message-ID: <003501c17cb8$7e579420$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Nic Ferrier" , "Olivier LF" Cc: References: <20011204222340.C1151@zipworld.com.au> Subject: Re: [Classpathx-crypto] pdf files Date: Tue, 4 Dec 2001 11:40:37 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > > Of course, info/TeX would be best. > > I'd like to look at docbook. I've used LaTeX for years but I'd rather > investigate docbook. Do you have any experience with it? > I am quite sure I read somewhere that gcj as some tools to convert > javadoc to texinfo, have you heard of that? I have used Docbook, and it is really good. However, docbook doesn't yet have an info maker and info is still the chosen doc platform for GNU. There's good reason for that, docbook may be the new and sexy thing but it still doesn't have the widespread support of info. And in many ways info is superior (it's lighter for one thing). The GNU project is working on a javadoc -> info tool. That is being done by the Classpath Tools project, which is part of Classpath. Hopefully we will eventually have docbook -> info too, I'm sure someone is working on it somewhere. Nic From raif@fl.net.au Tue Dec 04 06:51:12 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BE6R-0007mw-00 for ; Tue, 04 Dec 2001 06:51:11 -0500 Received: from solomon.fl.net.au (a3-p02.syd.fl.net.au [202.181.1.66]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 1F841168BA; Tue, 4 Dec 2001 22:51:08 +1100 (EST) Message-Id: <5.0.0.25.1.20011204225002.00a90cf0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Tue, 04 Dec 2001 22:52:59 +1100 To: "Nic Ferrier" From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] pdf files Cc: "Nic Ferrier" , In-Reply-To: <002e01c17cb7$da22fcf0$0e07a8c0@internal.mondus.com> References: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 11:36 AM 12/4/01 +0000, Nic Ferrier wrote: > > >You guys have a few pdf files on your site. > > >Are there free software tools for reading pdfs? > > > > the acrobat reader to my knowledge is free (see > > ). > >No. The acrobat reader is free as in beer. I meant free-software. Olivier answered this one already. > > >Are there alternatives to pdf files? postscript would be better > > >because there are free software tools for displaying them. > > > > these are, to my recollection, files published by the designers of the > > algorithm, not us. > >What are the redistribution terms? You may not be able to keep these on the >site, linking to them elsewhere might be ok though. dont know. i'll have to ask. if i get the authors' permission i guess i can keep them where they are. ok? the rationale for this is that these things tend to disappear after a time from the net and links become forever broken. they are included here so the alert/curious reader/user can verify the code against the designer's specifications. cheers; rsn From nferrier@tapsellferrier.co.uk Tue Dec 04 06:56:24 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BEBU-0008EJ-00 for ; Tue, 04 Dec 2001 06:56:24 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BEPy-0001M8-00; Tue, 04 Dec 2001 12:11:22 +0000 Message-ID: <006701c17cba$aa233580$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "David Brownell" , References: <077501c17c7e$1e444a40$6800000a@brownell.org> Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code Date: Tue, 4 Dec 2001 11:56:09 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > - Coding style ... three space indents? No tabs? And > Hungarian "IamAnInterface" notation? Yoiks! I don't > like even one of those, sorry. I agree with Dave, but the coding standard is relaxed here at ClasspathX. We don't force people to use the GNU style (though I might in the future do a batch update of the CVS with a style enforcer I will do it only with people's agreement). I hate hungarian for java code. It just seems dumb to me... but I'm not prepared to force you guys to change it. > > - PDFs in the docs. DocBook XML where possible, > please. Though since these are original specs, I suspect > that's not a real option. Does CVS need to have those? > (I hate TexInfo equally ... DocBook at least turns into > good HTML, though the MathML output may be a > bit lacking just now.) Actually Dave, it's: "info where possible please". When there is an info generator for docbook I'll be happy for people to have their documentation in docbook, until then I meerly tolerate it /8-> I don't think the PDFs are generated by the project. If they are we must use something else. We might still have to ditch them and link to them elsewhere (which seems sensible anyway, if they're someone else's files). > - javadoc. The links to the PDFs were all broken, and > there were no "package.html" files to describe why each > package is there and how to use it. We'll have to think about the "links to PDFs" in light of my comments above. > - License ... LGPL, not "GPL + library exception". Maybe > not an immediate issue, but static linking will increasingly > matter. All code should be GPL + library exception. Nic From nferrier@tapsellferrier.co.uk Tue Dec 04 07:02:22 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BEHF-0008Pp-00 for ; Tue, 04 Dec 2001 07:02:22 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BEVo-0001MN-00; Tue, 04 Dec 2001 12:17:24 +0000 Message-ID: <006e01c17cbb$81c478f0$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "David Brownell" , "Raif S. Naffah" Cc: References: <5.0.0.25.1.20011204191021.00a37d30@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code Date: Tue, 4 Dec 2001 12:02:11 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > my hope is that contributors will come forward _when_ it is released. i'm > counting on the "snowball" effect :-) Absolutely... release early and often... Having said that the most popular ciphers are the ones that will encourage the most use. Nic From nferrier@tapsellferrier.co.uk Tue Dec 04 07:06:07 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BEKs-0008VY-00 for ; Tue, 04 Dec 2001 07:06:07 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BEZV-0001My-00; Tue, 04 Dec 2001 12:21:13 +0000 Message-ID: <008f01c17cbc$0a4e6410$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Raif S. Naffah" Cc: References: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> <5.0.0.25.1.20011204225002.00a90cf0@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] pdf files Date: Tue, 4 Dec 2001 12:06:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > >What are the redistribution terms? You may not be able to keep these on the > >site, linking to them elsewhere might be ok though. > > dont know. i'll have to ask. if i get the authors' permission i guess i > can keep them where they are. ok? > > the rationale for this is that these things tend to disappear after a time > from the net and links become forever broken. they are included here so > the alert/curious reader/user can verify the code against the designer's > specifications. I understand your reasons... I'm just nervous of distributing PDF files (a proprietary format) from non-GNU sources. I hope you understand. If you can get the author's permission I will _consider_ allowing their hosting on the GNU site. If not, we will have to manage the movement of the files (perhaps by meerly quoting them). Nic From raif@fl.net.au Tue Dec 04 07:20:22 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BEYf-0000Yd-00 for ; Tue, 04 Dec 2001 07:20:22 -0500 Received: from solomon.fl.net.au (a3-p02.syd.fl.net.au [202.181.1.66]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 2205E16889; Tue, 4 Dec 2001 23:20:16 +1100 (EST) Message-Id: <5.0.0.25.1.20011204231055.00a9baa0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Tue, 04 Dec 2001 23:22:07 +1100 To: "Nic Ferrier" From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] pdf files Cc: In-Reply-To: <008f01c17cbc$0a4e6410$0e07a8c0@internal.mondus.com> References: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> <5.0.0.25.1.20011204225002.00a90cf0@mail.syd.fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 12:06 PM 12/4/01 +0000, Nic Ferrier wrote: > > >What are the redistribution terms? You may not be able to keep these on >the > > >site, linking to them elsewhere might be ok though. > > > > dont know. i'll have to ask. if i get the authors' permission i guess i > > can keep them where they are. ok? > > > > the rationale for this is that these things tend to disappear after a time > > from the net and links become forever broken. they are included here so > > the alert/curious reader/user can verify the code against the designer's > > specifications. > > >I understand your reasons... I'm just nervous of distributing PDF files (a >proprietary format) from non-GNU sources. > >I hope you understand... no problems. i'll remove those files and replace them with links to their current site. cheers; rsn From nferrier@tapsellferrier.co.uk Tue Dec 04 07:29:39 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16BEhe-0000z1-00 for ; Tue, 04 Dec 2001 07:29:39 -0500 Received: from gateway.mondus.com ([193.132.141.145] helo=UKC21D) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16BEwI-0001Ni-00; Tue, 04 Dec 2001 12:44:46 +0000 Message-ID: <00a801c17cbf$54d49420$0e07a8c0@internal.mondus.com> From: "Nic Ferrier" To: "Raif S. Naffah" Cc: References: <5.0.0.25.1.20011204190014.00a586c0@mail.syd.fl.net.au> <5.0.0.25.1.20011204225002.00a90cf0@mail.syd.fl.net.au> <5.0.0.25.1.20011204231055.00a9baa0@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] pdf files Date: Tue, 4 Dec 2001 12:29:34 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > no problems. i'll remove those files and replace them with links to their > current site. If you're happy to do that it seems to be the best solution. Nic From david-b@pacbell.net Tue Dec 04 13:40:23 2001 Received: from mta5.snfc21.pbi.net ([206.13.28.241]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16BKUR-0003VC-00 for ; Tue, 04 Dec 2001 13:40:23 -0500 Received: from krypton ([206.170.7.66]) by mta5.snfc21.pbi.net (iPlanet Messaging Server 5.1 (built May 7 2001)) with SMTP id <0GNU00AJ51788L@mta5.snfc21.pbi.net> for classpathx-crypto@gnu.org; Tue, 04 Dec 2001 10:40:21 -0800 (PST) Date: Tue, 04 Dec 2001 10:38:56 -0800 From: David Brownell Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code To: Nic Ferrier , classpathx-crypto@gnu.org Message-id: <081d01c17cf2$ef269ea0$6800000a@brownell.org> MIME-version: 1.0 X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-Mailer: Microsoft Outlook Express 5.50.4133.2400 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT X-Priority: 3 X-MSMail-priority: Normal References: <077501c17c7e$1e444a40$6800000a@brownell.org> <006701c17cba$aa233580$0e07a8c0@internal.mondus.com> Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > > - PDFs in the docs. DocBook XML where possible, > > please. Though since these are original specs, I suspect > > that's not a real option. Does CVS need to have those? > > (I hate TexInfo equally ... DocBook at least turns into > > good HTML, though the MathML output may be a > > bit lacking just now.) > > Actually Dave, it's: "info where possible please". OK, so I'm a heretic who things "info" should go away in favor of a much more widely adopted standard, "HTML" ... :) I guess I'm content to have the PDFs just survive as links on the web page. Does that mean they'll move out of the project CVS? - Dave From olivier@zipworld.com.au Thu Dec 06 06:22:39 2001 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16Bwbv-0004iF-00 for ; Thu, 06 Dec 2001 06:22:39 -0500 Received: from tournesol.malabar.au (ppp190.dyn146.pacific.net.au [210.23.146.190]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id WAA02943; Thu, 6 Dec 2001 22:22:31 +1100 Received: from olivier by tournesol.malabar.au with local (Exim 3.32 #1 (Debian)) id 16BwUC-0000LC-00; Thu, 06 Dec 2001 22:14:40 +1100 Date: Thu, 6 Dec 2001 22:14:40 +1100 To: David Brownell Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code Message-ID: <20011206221440.A1292@zipworld.com.au> References: <077501c17c7e$1e444a40$6800000a@brownell.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <077501c17c7e$1e444a40$6800000a@brownell.org> User-Agent: Mutt/1.3.23i From: Olivier LF Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Mon, Dec 03, 2001 at 08:42:44PM -0800, David Brownell wrote: > - Coding style ... three space indents? No tabs? 3 spaces is not so unusual, it does save some precious space if you want to keep your code within the common 80 columns range. As for tabs, space is the lowest common denominator between editors. The brain dead ones display 8 spaces for TAB!!! and the good ones can always be configured to emulate tabs with spaces. Many projects require "space only" for that reason actually (Apache projects). It ensures you'll be able to work on the source no matter how modest your system and editor is. Back 6 years ago I used to edit files from home with a Minitel (A very cheap text terminal you get with the phone in France). It only supported line editing with "ed", those where the days... Olivier -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From david-b@pacbell.net Thu Dec 06 16:20:37 2001 Received: from mta5.snfc21.pbi.net ([206.13.28.241]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16C5wa-0003Tk-00 for ; Thu, 06 Dec 2001 16:20:37 -0500 Received: from krypton ([206.170.6.95]) by mta5.snfc21.pbi.net (iPlanet Messaging Server 5.1 (built May 7 2001)) with SMTP id <0GNX00K36XYAJH@mta5.snfc21.pbi.net> for classpathx-crypto@gnu.org; Thu, 06 Dec 2001 13:20:35 -0800 (PST) Date: Thu, 06 Dec 2001 13:19:08 -0800 From: David Brownell Subject: Re: [Classpathx-crypto] quick comments on gnu.crypto code To: Olivier LF Cc: classpathx-crypto@gnu.org Message-id: <0d3001c17e9b$a506c700$6800000a@brownell.org> MIME-version: 1.0 X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-Mailer: Microsoft Outlook Express 5.50.4133.2400 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT X-Priority: 3 X-MSMail-priority: Normal References: <077501c17c7e$1e444a40$6800000a@brownell.org> <20011206221440.A1292@zipworld.com.au> Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > > - Coding style ... three space indents? No tabs? > > 3 spaces is not so unusual, it does save some precious space if you want > to keep your code within the common 80 columns range. And the counter-argument is that "four spaces" is much more common, doesn't fight against standard 8-space tabstops, and is still "nicer" than "indent == tab" for cases where nested code constructs "must" be used. And I'll note that Linux coding style certainly says "indent == tab", and notes that when that's awkward, the algorithm is the problem, not the coding standard. That tends to be very true, in my observation. Kernel code, like crypto code, is a domain where "simple is better" normally wins against the more "deadline oriented" application domains where "done now is better" wins ... it's "done now" that argues against restructuring code to get rid of excessive nesting/indentation, and argues for narrow indents. (80/4 = max 20 levels/line, 80/3 = 26, either is too complex...) Not that I want to start such style flamewars ... on the other hand I think it's completely reasonable to say "three spaces" or "no tabs" are guidelines that I've never subscribed to. And I'll criticize them every time it comes up, particularly when they're added as exceptions to guidelines that are otherwise largely reasonable, since such style guidelines do add up to > As for tabs, space is the lowest common denominator between editors. > The brain dead ones display 8 spaces for TAB!!! and the good ones can > always be configured to emulate tabs with spaces. Displaying 8 spaces for tabstops is not the same as storing them that way. Some editors will silently correct spelling "mistakes" for you too, and store the results. I don't like either behavior. In both cases using a Real Text Editor is a reasonable requirement. Think of tabs as an 8-to-1 compression scheme built in to the standard text file format. > Many projects require "space only" for that reason actually (Apache projects). The original motivation I heard for that was that a number of early contributors didn't want to switch from Win32 editors which, to this day, are often unable to handle tabbing correctly. (MSFT discourages widespread use of monospaced fonts and "ASCII art" tools. Never mind that interop with other operating systems gets worse that way.) Many non-Apache projects still expect that Real Text Editors will be used ... which know how to handle tabs! :) - Dave From J.Frazur@finnexpo.fi Fri Dec 14 09:21:18 2001 Received: from [61.144.180.47] (helo=mysvr.meiyang.com.cn) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16EtDB-0003Y4-00 for ; Fri, 14 Dec 2001 09:21:18 -0500 Received: from mail.finnexpo.fi by mysvr.meiyang.com.cn; Fri, 14 Dec 2001 22:24:50 +0800 From: "J.Frazur@finnexpo.fi" To: "8490@lycos.com" <8490@lycos.com> Message-ID: <1008361117.0452675782@mail.finnexpo.fi> MIME-Version: 1.0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-RBL-Warning: (inputs.orbz.org) Open relay. Please see http://orbz.org/?61.144.180.47 X-RBL-Warning: (relays.ordb.org) Blackholed by ORDB -- see http://ordb.org/lookup/?host=61.144.180.47 Date: Fri, 14 Dec 2001 09:21:18 -0500 Subject: [Classpathx-crypto] Reduce Travel Costs Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Take Control Of Your Conference Calls

Long Distance Conferencing
Only 18 Cents Per Minute

Connects Up To 100 Participants=21

  • No setup fees
  • No contracts or monthly fees
  • Call anytime, from anywhere, to anywhere
  • International Dial In 18 cents per minute
  • Simplicity in set up and administration
  • Operator Help available 24/7
  • G= et the best quality, the easiest to use, and lowest rate in the industry.

    If you like saving = money, fill out the form below and one of our consultants will contact you.

    Required Input Field*

    Name*
    Web Address*
    Company Name*
    State*
    Business Phone*
    Home Phone
    Email Address*
    Type of Business



    This ad is being sent in compliance with Senate Bill 1618= , Title 3, Section 301. You have recently visited our web site, referral or affiliate sit= es which indicated you were interested in communication services. If this email is reaching = you in error and you feel that you have not contacted us, Click here. We sincerely apologize, and assure you will be r= emoved from our distribution list.

    From nferrier@tapsellferrier.co.uk Sun Dec 16 18:24:38 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16Fke6-0006mI-00 for ; Sun, 16 Dec 2001 18:24:38 -0500 Received: from nferrier by tf1.tapsellferrier.co.uk with local (Exim 3.12 #1 (Debian)) id 16Fku9-0005tD-00; Sun, 16 Dec 2001 23:41:13 +0000 From: Nic Ferrier To: classpathx-crypto@gnu.org Message-Id: Date: Sun, 16 Dec 2001 23:41:13 +0000 Subject: [Classpathx-crypto] Makefile Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Just to let you know: I am working on this issue. I've been busy with work (last week at my old contract, new contract this week!) and I haven't had much time. However, I did solve the central portability problem of my original makefile: the path separator used (I had hard coded ':'). I've solved it by using a functional system (the GNU Make @(call) construct allows a certain amount of functionalism). It strikes me that if I solve the $(wildcard) problem then I won't have to use the shell script trick and that might mean that a native windows make might work. I'm still working on it... I'll try and get it done this week... I'm really sorry for the delay. If you guys want to go ahead with an ANT based release then let me know. Nic From raif@fl.net.au Mon Dec 17 02:52:45 2001 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16FsZo-0005Wb-00 for ; Mon, 17 Dec 2001 02:52:45 -0500 Received: from solomon.fl.net.au (a5-p55.syd.fl.net.au [202.181.2.55]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 9423F16806; Mon, 17 Dec 2001 18:52:40 +1100 (EST) Message-Id: <5.0.0.25.1.20011217184639.00a4b4e0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Mon, 17 Dec 2001 18:54:40 +1100 To: Nic Ferrier From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] Makefile Cc: classpathx-crypto@gnu.org In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 11:41 PM 12/16/01 +0000, Nic Ferrier wrote: >Just to let you know: I am working on this issue. I've been busy with >work (last week at my old contract, new contract this week!) and I >haven't had much time. no worries. it's xmas anyway :-) >However, I did solve the central portability problem of my original >makefile: the path separator used (I had hard coded ':'). > >I've solved it by using a functional system (the GNU Make @(call) >construct allows a certain amount of functionalism). we use a trick (see the Makefile.in), where we do: (line #119): # a workaround to allow using the same Makefile under both Unix and NT ifeq (${OS},Windows_NT) PS:=; else PS:=: endif and then use ${PS} everywhere we need to separate path-elements. >It strikes me that if I solve the $(wildcard) problem then I won't >have to use the shell script trick and that might mean that a native >windows make might work. > >I'm still working on it... I'll try and get it done this week... I'm >really sorry for the delay. > > >If you guys want to go ahead with an ANT based release then let me >know. i'd suggest we do a release with ANT if we're going to standardise on ANT in classpathx projects. if not, i'd rather wait and have a common 'way' for building; ie. make with ANT as an alternative. if any other project/team-leader is willing to adopt ANT, i'm happy to help so we can harmonise the use of ANT across multiple projects. >Nic cheers; rsn From nferrier@tapsellferrier.co.uk Mon Dec 17 06:58:40 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16FwPo-0000mz-00 for ; Mon, 17 Dec 2001 06:58:40 -0500 Received: from [194.74.202.254] (helo=DBennett2) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16Fwg5-00068c-00 for ; Mon, 17 Dec 2001 12:15:29 +0000 Message-ID: <000001c186f2$3c3fb420$d4643dc0@gee.co.uk> From: "Nic Ferrier" To: References: <5.0.0.25.1.20011217184639.00a4b4e0@mail.syd.fl.net.au> Subject: Re: [Classpathx-crypto] Makefile Date: Mon, 17 Dec 2001 11:15:02 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.3018.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.3018.1300 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > we use a trick (see the Makefile.in), where we do: > > (line #119): > > # a workaround to allow using the same Makefile under both Unix and NT > ifeq (${OS},Windows_NT) > PS:=; > else > PS:=: > endif > > and then use ${PS} everywhere we need to separate path-elements. Yes. I've fixed that by using this functional system. > >If you guys want to go ahead with an ANT based release then let me > >know. > > i'd suggest we do a release with ANT if we're going to standardise on ANT > in classpathx projects. if not, i'd rather wait and have a common 'way' > for building; ie. make with ANT as an alternative. I'd rather not dictate the use ANT across the board... if we move to that gradually that would be fine. I still prefer Autoconf/Make because that is the GNU standard and because it handles native code better... given the importance of GCJ in the "strategy" native code may become important. Having said that I think ANT will become important as it matures and more java programmers come to GNU from other environments. > if any other project/team-leader is willing to adopt ANT, i'm happy to help > so we can harmonise the use of ANT across multiple projects. Thanks Raif. Nic From olivier@zipworld.com.au Mon Dec 17 07:21:21 2001 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) id 16Fwlk-0001q6-00; Mon, 17 Dec 2001 07:21:20 -0500 Received: from tournesol.malabar.au (kenny105.zip.com.au [61.8.18.233]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id XAA28530; Mon, 17 Dec 2001 23:21:15 +1100 Received: from olivier by tournesol.malabar.au with local (Exim 3.32 #1 (Debian)) id 16Fwh5-0002XK-00; Mon, 17 Dec 2001 23:16:31 +1100 Date: Mon, 17 Dec 2001 23:16:31 +1100 To: classpathx-crypto@gnu.org Cc: classpathx-discuss@gnu.org Subject: Re: [Classpathx-crypto] Makefile Message-ID: <20011217231631.B26474@zipworld.com.au> References: <5.0.0.25.1.20011217184639.00a4b4e0@mail.syd.fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5.0.0.25.1.20011217184639.00a4b4e0@mail.syd.fl.net.au> User-Agent: Mutt/1.3.23i From: Olivier LF Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Mon, Dec 17, 2001 at 06:54:40PM +1100, Raif S. Naffah wrote: > At 11:41 PM 12/16/01 +0000, Nic Ferrier wrote: > > >However, I did solve the central portability problem of my original > >makefile: the path separator used (I had hard coded ':'). > > > >I've solved it by using a functional system (the GNU Make @(call) > >construct allows a certain amount of functionalism). > > # a workaround to allow using the same Makefile under both Unix and NT > ifeq (${OS},Windows_NT) > PS:=; > else > PS:=: > endif > Autoconf seems to take care of that. This is the code generated in the configure script: # Rewrite early, but we need PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! $SHELL" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi I rely on this in my autoconf/automake example for gnu-crypto. However... apparantly it doesn't work on cygwin. I suspect it is because I also have to add double quotes all over the place, something like: jikes -classpath "pkg1@PS@pkg2" ... to prevent the shell from resolving the semicolon as the "end of command" character. It used to work on cygwin but I haven't try it for few weeks. However going back to the earlier Makefile discussion, I've cut and paste portions of the make process generated by automake/autoconf scripts for GCJ compilation and shared libraries. As you can see, it is not exactly trivial or intuitive. Do you really want to reinvent all of that while automake, a GNU tool Copyrighted by the FSF, is out there? Olivier Making all in source make[1]: Entering directory `/home/olivier/tmp/crypt/source' gcj -C --encoding=UTF-8 -fCLASSPATH=/home/olivier/program/cvs/classpathx/crypto/source -d . /home/olivier/program/cvs/classpathx/crypto/source/gnu/crypto/cipher/Anubis.java ... ... make all-am make[2]: Entering directory `/home/olivier/tmp/crypt/source' source='gnu/crypto/cipher/Anubis.java' object='gnu/crypto/cipher/Anubis.lo' libtool=yes \ depfile='.deps/gnu/crypto/cipher/Anubis.Plo' tmpdepfile='.deps/gnu/crypto/cipher/Anubis.TPlo' \ depmode=gcc3 /bin/sh /home/olivier/program/cvs/classpathx/crypto/depcomp \ /bin/sh ../libtool --mode=compile gcj --encoding=UTF-8 -fassume-compiled -fCLASSPATH=/home/olivier/program/cvs/classpathx/crypto/source -g -O2 -c -o gnu/crypto/cipher/Anubis.lo `test -f gnu/crypto/cipher/Anubis.java || echo '/home/olivier/program/cvs/classpathx/crypto/source/'`gnu/crypto/cipher/Anubis.java rm -f gnu/crypto/cipher/.libs/Anubis.lo gcj --encoding=UTF-8 -fassume-compiled -fCLASSPATH=/home/olivier/program/cvs/classpathx/crypto/source -g -O2 -c /home/olivier/program/cvs/classpathx/crypto/source/gnu/crypto/cipher/Anubis.java -MT gnu/crypto/cipher/Anubis.lo -MD -MP -MF .deps/gnu/crypto/cipher/Anubis.TPlo -fPIC -o gnu/crypto/cipher/Anubis.o mv -f gnu/crypto/cipher/Anubis.o gnu/crypto/cipher/.libs/Anubis.lo gcj --encoding=UTF-8 -fassume-compiled -fCLASSPATH=/home/olivier/program/cvs/classpathx/crypto/source -g -O2 -c /home/olivier/program/cvs/classpathx/crypto/source/gnu/crypto/cipher/Anubis.java -MT gnu/crypto/cipher/Anubis.lo -MD -MP -MF .deps/gnu/crypto/cipher/Anubis.TPlo -o gnu/crypto/cipher/Anubis.o >/dev/null 2>&1 mv -f gnu/crypto/cipher/.libs/Anubis.lo gnu/crypto/cipher/Anubis.lo ... ... /bin/sh ../libtool --mode=link gcj --encoding=UTF-8 -fassume-compiled -fCLASSPATH=/home/olivier/program/cvs/classpathx/crypto/source -g -O2 -o lib-gnu-crypto.la -rpath /home/olivier/tmp/ooo/lib -version-info 1:0 gnu/crypto/cipher/Anubis.lo gnu/crypto/cipher/BaseCipher.lo gnu/crypto/cipher/CipherFactory.lo gnu/crypto/cipher/IBlockCipher.lo ... ... ... ... mkdir .libs rm -fr .libs/lib-gnu-crypto.la .libs/lib-gnu-crypto.* .libs/lib-gnu-crypto.* gcc -shared gnu/crypto/cipher/Anubis.lo gnu/crypto/cipher/BaseCipher.lo gnu/crypto/cipher/CipherFactory.lo ... ... ... ... -lc -Wl,-soname -Wl,lib-gnu-crypto.so.1 -o .libs/lib-gnu-crypto.so.1.0.0 (cd .libs && rm -f lib-gnu-crypto.so.1 && ln -s lib-gnu-crypto.so.1.0.0 lib-gnu-crypto.so.1) (cd .libs && rm -f lib-gnu-crypto.so && ln -s lib-gnu-crypto.so.1.0.0 lib-gnu-crypto.so) ar cru .libs/lib-gnu-crypto.a gnu/crypto/cipher/Anubis.o gnu/crypto/cipher/BaseCipher.o ... ... ... ... ranlib .libs/lib-gnu-crypto.a creating lib-gnu-crypto.la (cd .libs && rm -f lib-gnu-crypto.la && ln -s ../lib-gnu-crypto.la lib-gnu-crypto.la) -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From nferrier@tapsellferrier.co.uk Mon Dec 17 07:35:41 2001 Received: from tf1.tapsellferrier.co.uk ([195.7.242.226]) by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian)) id 16Fwzc-0003nZ-00; Mon, 17 Dec 2001 07:35:40 -0500 Received: from [194.74.202.254] (helo=DBennett2) by tf1.tapsellferrier.co.uk with smtp (Exim 3.12 #1 (Debian)) id 16FxFu-0006AD-00; Mon, 17 Dec 2001 12:52:30 +0000 Message-ID: <003101c186f7$676c9d20$d4643dc0@gee.co.uk> From: "Nic Ferrier" To: Cc: References: <5.0.0.25.1.20011217184639.00a4b4e0@mail.syd.fl.net.au> <20011217231631.B26474@zipworld.com.au> Subject: Re: [Classpathx-crypto] Makefile Date: Mon, 17 Dec 2001 12:35:38 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.3018.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.3018.1300 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: > However going back to the earlier Makefile discussion, I've cut and paste > portions of the make process generated by automake/autoconf scripts for > GCJ compilation and shared libraries. As you can see, it is not exactly > trivial or intuitive. > Do you really want to reinvent all of that while automake, a GNU tool > Copyrighted by the FSF, is out there? The trouble is automake (the version that widely installed) has some issues... my bodged makefile is not actually that much work and therefore I don't mind maintaining it until automake becomes a realistic option. I wouldn't object to any project using automake as long as they maintain it themselves. But on the other hand my bodge makefile does the job (or can do the job) quite well. Nic From raif@fl.net.au Sat Jan 05 17:50:22 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian)) id 16Mzdu-00054u-00 for ; Sat, 05 Jan 2002 17:50:22 -0500 Received: from solomon.fl.net.au (a5-p44.syd.fl.net.au [202.181.2.44]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id B69A316998; Sun, 6 Jan 2002 09:50:15 +1100 (EST) Message-Id: <5.0.0.25.1.20020106094508.00a644f0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Sun, 06 Jan 2002 09:52:29 +1100 To: jjonsson@rsasecurity.com, bkaliski@rsasecurity.com From: "Raif S. Naffah" Cc: GNU Crypto Developers , "Paulo S. L. M. Barreto" Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: [Classpathx-crypto] NESSIE RSA-PSS submission Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Gentlemen, while implementing this scheme in Java, i found an inconsistency in the specification of the EMSA-PSS-Decode(M, EM, emBits) primitive (document B of your submission, page 11), at step #10. this should read "...or if the octet at position emLen -hLen -sLen -2 is not equal to 01..." and not "...emLen -hLen -sLen -1." cheers; rsn From jjonsson@rsasecurity.com Thu Jan 10 05:20:07 2002 Received: from mail.rsasecurity.com ([204.167.112.129] helo=tholian.rsasecurity.com) by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian)) id 16OcJb-0006Ro-00 for ; Thu, 10 Jan 2002 05:20:07 -0500 Received: from sdtihq24.securitydynamics.com by tholian.rsasecurity.com via smtpd (for fencepost.gnu.org [199.232.76.164]) with SMTP; 10 Jan 2002 10:19:44 UT Received: from ebola.securitydynamics.com (ebola.securid.com [192.168.7.4]) by sdtihq24.securid.com (Pro-8.9.3/Pro-8.9.3) with ESMTP id FAA29431; Thu, 10 Jan 2002 05:19:51 -0500 (EST) Received: from exno02.dynas.se (localhost [127.0.0.1]) by ebola.securitydynamics.com (8.10.2+Sun/8.9.1) with ESMTP id g0AAJm028611; Thu, 10 Jan 2002 05:19:49 -0500 (EST) Received: from jjonssonpc (jjonsson-pc.d.dynas.se [172.16.13.227]) by exno02.dynas.se with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id V47AGKG6; Thu, 10 Jan 2002 11:19:43 +0100 Message-ID: <004c01c199c0$68ed0960$e30d10ac@jjonssonpc> From: "Jakob Jonsson" To: , "Raif S. Naffah" Cc: "GNU Crypto Developers" , "Paulo S. L. M. Barreto" References: <5.0.0.25.1.20020106094508.00a644f0@mail.syd.fl.net.au> Date: Thu, 10 Jan 2002 11:20:21 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Subject: [Classpathx-crypto] Re: NESSIE RSA-PSS submission Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hi Raif, I think the inconsistency lies in how you define the leftmost position of an octet string; this could be either "position 0" (as in C and Java) or "position 1". We have adopted the second convention; the octet on position n is the nth leftmost octet rather than the (n+1)st leftmost octet. The length of the PS string preceding the 01 octet is emLen-hLen-sLen-2, so the 01 octet is on position emLen-hLen-sLen-1. Yet, I admit that this convention should have been explicitly stated in the document. Best regards, Jakob Jonsson RSA Laboratories ----- Original Message ----- From: "Raif S. Naffah" To: ; Cc: "GNU Crypto Developers" ; "Paulo S. L. M. Barreto" Sent: Saturday, January 05, 2002 11:52 PM Subject: NESSIE RSA-PSS submission > Gentlemen, > > while implementing this scheme in Java, i found an inconsistency in the > specification of the EMSA-PSS-Decode(M, EM, emBits) primitive (document B > of your submission, page 11), at step #10. > > this should read "...or if the octet at position emLen -hLen -sLen -2 is > not equal to 01..." and not "...emLen -hLen -sLen -1." > > > cheers; > rsn From raif@fl.net.au Fri Jan 11 15:20:48 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian)) id 16P8AR-0004aj-00 for ; Fri, 11 Jan 2002 15:20:48 -0500 Received: from solomon.fl.net.au (a5-p30.syd.fl.net.au [202.181.2.30]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id 36DD116947; Sat, 12 Jan 2002 07:20:43 +1100 (EST) Message-Id: <5.0.0.25.1.20020112071857.00a71050@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Sat, 12 Jan 2002 07:23:02 +1100 To: "Jakob Jonsson" From: "Raif S. Naffah" Subject: Re: [Classpathx-crypto] Re: NESSIE RSA-PSS submission Cc: , "Raif S. Naffah" , "GNU Crypto Developers" , "Paulo S. L. M. Barreto" In-Reply-To: <004c01c199c0$68ed0960$e30d10ac@jjonssonpc> References: <5.0.0.25.1.20020106094508.00a644f0@mail.syd.fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: At 11:20 AM 1/10/02 +0100, Jakob Jonsson wrote: >Hi Raif, > >I think the inconsistency lies in how you define the leftmost position of an >octet string; this could be either "position 0" (as in C and Java) or >"position 1". We have adopted the second convention; the octet on position n >is the nth leftmost octet rather than the (n+1)st leftmost octet. The length >of the PS string preceding the 01 octet is emLen-hLen-sLen-2, so the 01 >octet is on position emLen-hLen-sLen-1. yes. it definitely makes sense. i was in "java mode" too deep to see another explanation. >Yet, I admit that this convention should have been explicitly stated in the >document. thanks for taking the time to respond. FYI, the soon to be released GNU library will include a full implementation of the RSA-PSS scheme with spport for both SHA and RIPEMD160 as underlying hash functions for the MGF. cheers; rsn >Best regards, >Jakob Jonsson >RSA Laboratories > >----- Original Message ----- >From: "Raif S. Naffah" >To: ; >Cc: "GNU Crypto Developers" ; "Paulo S. L. M. >Barreto" >Sent: Saturday, January 05, 2002 11:52 PM >Subject: NESSIE RSA-PSS submission > > > > Gentlemen, > > > > while implementing this scheme in Java, i found an inconsistency in the > > specification of the EMSA-PSS-Decode(M, EM, emBits) primitive (document B > > of your submission, page 11), at step #10. > > > > this should read "...or if the octet at position emLen -hLen -sLen -2 is > > not equal to 01..." and not "...emLen -hLen -sLen -1." > > > > > > cheers; > > rsn > > >_______________________________________________ >Classpathx-crypto mailing list >Classpathx-crypto@gnu.org >http://mail.gnu.org/mailman/listinfo/classpathx-crypto From raif@fl.net.au Sat Jan 12 19:10:58 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28]) by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian)) id 16PYEj-0005Ok-00; Sat, 12 Jan 2002 19:10:58 -0500 Received: from solomon.fl.net.au (a3-p34.syd.fl.net.au [202.181.1.98]) by int-mail.syd.fl.net.au (Postfix) with ESMTP id C40E4168D0; Sun, 13 Jan 2002 11:10:50 +1100 (EST) Message-Id: <5.0.0.25.1.20020113110855.00a6fcc0@mail.syd.fl.net.au> X-Sender: raif@mail.syd.fl.net.au X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Sun, 13 Jan 2002 11:13:11 +1100 To: GNU Crypto Developers , From: "Raif S. Naffah" Cc: "Paulo S. L. M. Barreto" Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: [Classpathx-crypto] latest GNU Crypto library Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi guys, please have a look at which describes the cointents of the library as of yesterday and tell me what you think. i'd like to have a release done before the next weekend, if possible, even if this means doing it with ANT tool only. cheers; rsn From creamtec@hot.useractive.com Mon Jan 21 16:51:25 2002 Received: from hot.useractive.com ([64.5.69.48]) by fencepost.gnu.org with esmtp (Exim 3.33 #1 (Debian)) id 16SmLb-00022f-00 for ; Mon, 21 Jan 2002 16:51:24 -0500 Received: (from creamtec@localhost) by hot.useractive.com (8.11.6/8.11.4) id g0LLpOB21468 for classpathx-crypto@gnu.org; Mon, 21 Jan 2002 15:51:24 -0600 Message-Id: <200201212151.g0LLpOB21468@hot.useractive.com> Reply-To: "CreamTec News" From: "CreamTec News" To: Date: Fri, 18 Jan 2002 16:41:50 -0500 Organization: CreamTec, LLC MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0229_01C1A03B.E786CB90" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700 Subject: [Classpathx-crypto] New Java Swing web-enabling technology - you have to see it to believe it Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0229_01C1A03B.E786CB90 Content-Type: multipart/alternative; boundary="----=_NextPart_001_022A_01C1A03B.E786CB90" ------=_NextPart_001_022A_01C1A03B.E786CB90 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Are you developing Java applications using Swing, AWT and = servlets/JSP? Companies that develop Java applications today must choose between = making a GUI front end using AWT/Swing or HTML front end using servlets = and JSP. Either choice has advantages and disadvantages, but it is clear = that the ideal solution would support both. However, because these = technologies are very different in their nature, only one can be = typically implemented in a finished application. There is a large market = for GUI based Java applications but these are running into speed and = compatibility problems. Also, applets executed within browsers cannot = take advantage of the latest Swing controls and features. Taken = together, these issues prevent companies from developing GUI as they = should be able to do. WebCream solves these problems without programmers = having to learn any APIs and without any modification to existing forms. = =20 =20 WebCream 4.0 is here and you have to see it to believe it! WebCream is a unique tool for Java, that provides automated = web-enabling for GUI based Java applications and applets. WebCream = allows developers to implement a GUI front end using AWT and Swing, and = at the same time automatically get HTML access to the application. In a = way, WebCream can be thought of as a dynamic Java to HTML converter, = that converts Java frames and dialogs to HTML on the fly. It then = emulates web page actions as GUI events to retain application original = logic. WebCream is unique in that it requires no modifications to = existing forms and business logic, and does not require programmers to = learn any APIs. It is designed to publish existing applications and = applets, it's just a matter of setting up your web server and a property = file describing the application. The rest is handled by WebCream. To see = a demonstration of WebCream live, check out our Demos page.=20 Visit WebCream page at http://www.creamtec.com/webcream for = detailed information. =20 =20 Featured in =20 We apologize if you have received this email by mistake. This is a = one-time notification and you will not receive any email from CreamTec = unless you register on our website. If you are a registered customer of = CreamTec and wish to be removed from our list just reply to this email = or send an email to remove@creamtec.com.=20 ------=_NextPart_001_022A_01C1A03B.E786CB90 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    Are you = developing=20 Java applications using Swing, AWT and=20 servlets/JSP?
    Companies = that=20 develop Java applications today must choose between making a GUI = front end=20 using AWT/Swing or HTML front end using servlets and JSP. Either = choice=20 has advantages and disadvantages, but it is clear that the ideal = solution=20 would support both. However, because these technologies are very = different=20 in their nature, only one can be typically implemented in a = finished=20 application. There is a large market for GUI based Java = applications but=20 these are running into speed and compatibility problems. Also, = applets=20 executed within browsers cannot take advantage of the latest Swing = controls and features. Taken together, these issues prevent = companies from=20 developing GUI as they should be able to do. WebCream solves these = problems without programmers having to learn any APIs and without = any=20 modification to existing forms.


    WebCream 4.0 is=20 here and you have to see it to believe = it!
    WebCream is a unique tool for Java, that provides = automated=20 web-enabling for GUI based Java applications and applets. = WebCream=20 allows developers to implement a GUI front end using AWT and = Swing, and at=20 the same time automatically get HTML access to the = application. In a=20 way, WebCream can be thought of as a dynamic Java to HTML = converter, that=20 converts Java frames and dialogs to HTML on the fly. It = then=20 emulates web page actions as GUI events to retain application = original=20 logic. WebCream is unique in that it requires no modifications to = existing=20 forms and business logic, and does not require programmers to = learn any=20 APIs. It is designed to publish existing applications and applets, = it's=20 just a matter of setting up your web server and a property file = describing=20 the application. The rest is handled by WebCream. To see a = demonstration=20 of WebCream live, check out our Demos page.

    Visit = WebCream page at=20
    http://www.creamtec.com/webcream for=20 detailed information.


    =

    Featured in
    =20


    We apologize if = you have=20 received this email by mistake. This is a one-time notification = and you=20 will not receive any email from CreamTec unless you register on = our=20 website. If you are a registered customer of CreamTec and wish to be = removed=20 from our list just reply to this email or send an email to remove@creamtec.com
    . =

    ------=_NextPart_001_022A_01C1A03B.E786CB90-- ------=_NextPart_000_0229_01C1A03B.E786CB90 Content-Type: image/gif; name="logo.gif" Content-Transfer-Encoding: base64 Content-Location: http://www.creamtec.com/images/logo.gif R0lGODlhQAApAMQfAMfGw/Hq2evm2Z6PbU9eeLCjhIuSnkNTcVtogKqcfMa7oXN9j7u8u9/b0q+x tNPRyn+IlrywlOXdyuvj0d/WwqOnrNPJsqSWdc3Dq9nQurapjJecpWdzh5iJZTdJaffw4SH5BAEA AB8ALAAAAABAACkAAAX/4CeOZGmeaKqubOu+cCzPbaBodD5nQ1fowFqk0xkogkhUIEFUBEoAx8bA qXI82Kw2a+UsNhsHoJFbdhITkgBy8EAqAMAj1ogDwJDrZlboREwPHgYeBAYMZEkCAmIHLgp+KBwE CFscEGFjMg8ABm0EHC0SkCgPCwcLlhCoWx4HVV9gYKhWBFgIEFSEFS0FPyx3eR4IHFQGqnhdl7Ec YAYbCwiUrYgqFANpJwFPKHGyHNKshFbOYh8ArQgtEUcoGRcZKRMYOoOuYBVzKBfbJ49EvUywWSBC IgAFCi8GVfE0LB8JCX9SFOhBpKKIDEQuiAgwpAO7Fg8MjABgiQEBaiIo/3w0gcEJBoAdcASgeMQM kQQjMqxswcFBBQglFOwcIUoCiQj7PgwskgbDGQwUNH4IcAGHUiYJjIqwoACbCAYLBBAI6quEhAFl RQzQ2qfDvA8F2GHA+UED2g8diQzQxoTpCAGgPJSg0MFCCQwDrpGg8McGkYgfBog4+8MpD38X+tqt OOoD4A9jSUxoImGChbaGSWC40PaxUCZxB1wwEvPDTYQfzj6esETqBwYQwJpoXXFAahL+OrDmzJzw mScJEvBTWpio754IAJgIQDyC18VoDXOvmOCR8Q8J1oqIMH3qcRHsHCAwsCCFhIPtVxg8wXvGAwLQ CJAECZvYQUYDUjhkTuoYAqJQgTgNDihCG1k4MEgWIv2XxQERjnTFAXtIOEIDG9TCzIMemOQBKLUg 4AAW2omA4BUEbNChiJ5hwcAHlHCIxQIMYFHBhSNUYQA+OJ4QpAcCNMCKhVgoOGGSKkCw4gcverCB HWIRYgIA6VCJQi27LICFAJQg4KQbD1RBxgMH7CgmIFF+0AYCAmARho6DjLVBnHOesIGXdoojjAAo ctDGHXgGegIVu/x2xS0CCmDKKWN4UMGNjs4gAANedEpCAyixIAAnBDgg6gigrkhMLLCCsRACC2y6 qgmnAsBArBswEEeptwYr7LDEhgAAOw== ------=_NextPart_000_0229_01C1A03B.E786CB90 Content-Type: image/gif; name="jars.gif" Content-Transfer-Encoding: base64 Content-Location: http://www.creamtec.com/webcream/images/jars.gif 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 ------=_NextPart_000_0229_01C1A03B.E786CB90 Content-Type: image/gif; name="javaworld.gif" Content-Transfer-Encoding: base64 Content-Location: http://www.creamtec.com/webcream/images/javaworld.gif R0lGODlhbgAkAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Z mf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8A Zv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZ M8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wA AJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm /5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/ zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZm mWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNm MzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/ AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz /wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAbgAkAEAI/wABCBxI sKDBgwgTKlzIsKFDh1auSZxIsaLFixgdqVETQ6CMjTIEHhijZoxAAyQ3qlzJciOOgSlXrhC4oqWj iTMNsrpWcGIgABErslrhU+DOa4FWHJ3IyqhGkwAOHABgIGdHAB+nYnUJMycOlS8Fjsn5UU3Omhtv SrRiUOnPgUpZBZpoJSjSpW+XXmNrN9DSoQBWyNLYsrDhw4ht4jyIsbHjx5Alvn1IubLlyw0jEk7M ubPnwo5mSWzaFincujkxH2SlMY1WLlA9qtGKg8tAGSEFfk19MiyAMbkDp0arsqjBiGx7Sg6sVzLR tXNNK7VIepZG3wBwuB54QGXw2xu9gv+FqcbAQbSir5EuiFy1e5qR48vH+HZFIL+T31uePr+//8jr 6UeZUrN8ZmBLY0gVQ0zeSVUWS+nxhFB7Ak5YoBpdkKcVAF2okVsMJV0l0IIbXYXDSwb4RlJwMmhF XFp0JcRKgMZVCJQsIHn03QE4mLfCWLKpERZKZI0nllXh0bRSeoAdNBdvABRlxU4zHXXfaCvYVReV AFgJ1IUiArBgQSuKpMZ2Ypqlm5G/XTVSgkqqoZZp59GpHFLPXTNTdD/ZNVFgMUZHmhUXHjgGgwYi ulGECfnFm597CRQdUnwK5OdAk16pXk6EHuhpYnMmV5qoNg4YY6k28vffqhclheqrsCr/pCqrtPrX ZKyNXrPZp7x6yiiuCRG1a6/EchZqsM3VehFhhx66UbMxNeupii2dpdhyCLkFbCAX5oaWiCTZFlVK 0K4kbUljUIsuSVe9uCiWjd4Kq2BPkUfQV1d9BGVgSRKUIkyxFeRuhPtiGqlR2NoYCGH5ZggXnAZ0 4W2JI6rp0aEq5tSdxS8eO+HBAhln34xyBXafq0Ddx9bIM7q6woUOrwClt3BuJWRXa3J1ZJDWFpdw aflFudxRM9JFNKCSEb0UWwuXtGFg2GU3W5BDAim1zr8h+UjPajCp0IwGiVzXlM7hFBRpWd7n5cs5 3hYwSjfTtCFJ4mGd7kAGbIjeYghxkXnnT8maxudRbAVO2iFPxbBCDCTKsHgMX4GlFY/eKR6tzCTW jIPjK3zksZN6EiSz0HvZxdxyeY4GlOpdss52sbDPGTRBFEoqlMz02b5Y6hQ1iTjsxTJZMKCzp20F b1mehbzMyB9P0+jwKSt96MxD32WAwGY7vbKiWuFXco5mHyzZm4qPWeDbzyev+ey3735CAQEAOw== ------=_NextPart_000_0229_01C1A03B.E786CB90-- From jeff_g902@yahoo.com Tue Feb 12 11:53:24 2002 Received: from delysid.gnu.org ([158.121.106.20]) by fencepost.gnu.org with esmtp (Exim 3.33 #1 (Debian)) id 16agBH-0005k3-00 for ; Tue, 12 Feb 2002 11:53:23 -0500 Received: from cpe00e0290a037c.cpe.net.cable.rogers.com ([24.112.151.70] helo=M5Mailer) by delysid.gnu.org with smtp (Exim 3.34 #2) id 16agBE-00065n-00 for ; Tue, 12 Feb 2002 11:53:20 -0500 From: "Jeff Gordon" To: classpathx-crypto@gnu.org Date: Tue, 12 Feb 2002 11:38:44 -0500 X-Mailer: Mach5 Mailer-2.50 PID{c8ea4ab9-47eb-461a-9ecf-71e0638a0731} RC{} Reply-To: jeff_g902@yahoo.com MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----000000000000000000000" Message-ID: <2002212163844782VMNIXOBMBGMR@M5Mailer> Subject: [Classpathx-crypto] crypto web site Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: ------000000000000000000000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi, While browsing the web on 1/21/2002, I found you on this web site http://www.gnu.org/software/classpathx/crypto/api/overview-summary. html titled GNU CRYPTOGRAPHIC PRIMITIVES AND TOOLS, VERSION 1.0.0: OVERVIEW . I know you will be glad to find out about a related crypto and security service CryptoHeaven. Have a look at the web site (.com) to find out more info... jeff. ps. I'm not trying to solicit you with junk, just thought you would be genuinely interested. ------000000000000000000000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi,

    While browsing the web on 1/21/2002, I found you on this web site http://www.gnu.org/software/classpathx/crypto/api/overview-summary.html titled GNU CRYPTOGRAPHIC PRIMITIVES AND TOOLS, VERSION 1.0.0: OVERVIEW .

    I know you will be glad to find out about a related crypto and security service CryptoHeaven. Have a look at the web site (.com) to find out more info...

    jeff.

    ps. I'm not trying to solicit you with junk, just thought you would be genuinely interested. ------000000000000000000000-- From cnc0@naver.com Tue Feb 26 02:33:15 2002 Received: from [211.34.126.2] (helo=naver.com) by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian)) id 16fc6s-0000Dx-00 for ; Tue, 26 Feb 2002 02:33:14 -0500 Message-ID: <4124-22002222673513450@naver.com> X-EM-Version: 6, 0, 0, 4 X-EM-Registration: #0010630410721500AB30 Reply-To: '±èÈ«±Ô' From: "±èÈ«±Ô" To: classpathx-crypto@gnu.org Date: Tue, 26 Feb 2002 16:35:13 +0900 MIME-Version: 1.0 Content-Type: text/html; charset=euc-kr Subject: [Classpathx-crypto] [±¤°í]ÇÔ²²ÇÏ½Ç »ç¾÷ÀÚ¸¦ ¸ð½Ê´Ï´Ù. Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.5 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive:

    ¢º2002³â 4¿ù ±×·£µå¿ÀÇÁ´× ¹× ÀüÀÚ»ó°Å·¡ Ãâ¹ü¿¡ ¸ÂÃß¾î ¹«·á»ç¾÷ÀÚ·Î È°µ¿ÇÒ ±¹³» ÃÊÇì´õ ¸®´õ »ç¾÷ÀÚ ¸î ºÐÀ» ¸ð½Ê´Ï´Ù.

    ¡ß´Ü±â°£¿¡ »ç»ó ÃÖ°íÀÇ °í¼ÒµæÀ» °¡Á®´ÙÁÙ »ç¾÷, ´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ
    ´ÙÀ½ Ä«Æä ±èÈ«±ÔÀÔ´Ï´Ù.

    ¢Ñ'´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ' »çÀÌÆ® : http://one.good.to

    1. ´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ´Â ¾î¶² ȸ»çÀΰ¡?
    (ÁÖ)´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ´Â ¹Ì±¹¿¡ º»»ç¸¦ µÎ°íÀÖ´Â ¼¼°èÀûÀÎ ³×Æ®¿÷ ¸¶ÄÉÆà ´Ù±¹Àû ȸ»ç·Î µåµð¾î À̹ø 2¿ù22ÀÏ Çѱ¹¿¡ ÁøÃâÇß½À´Ï´Ù.
    4¿ù±îÁö ÃÊÇì´õ »ç¾÷ÀÚ¸¦ ¸ð½Ê´Ï´Ù.

    2. ÀÎÅͳÝÀ¸·Î °¡»ó °¡ÀÔÀ̶õ?
    Á¤¸» ȹ±âÀûÀÎ ¹æ½ÄÀÔ´Ï´Ù.^^ ÀúÈñ ÀÚµ¿ °¡ÀÔ ½Ã½ºÅÛÀ¸·Î ȸ¿øµéÀÌ ¸ô·Á¿À°í ÀÖ´Â ±¤°æÀ» Á÷Á¢ ¸ñ°ÝÇÏ°í üÇèÇϽʽÿÀ. ½Ç·Î ³î¶ó¿î ÀÏÀÌ ÀϾ°í ÀÖ½À´Ï´Ù.

    (°¡ÀÔÇϽøé ÀÚ±â ȨÆäÀÌÁö°¡ »ý±â°í ÇÏ·ç¿¡ ÀÚ±â ÇϺο¡ 150-200¸í¾¿ ´Ã¾î³³´Ï´Ù. ÀÚ±â ȨÆäÀÌÁö·Î È«º¸ °¡´É) ¢Ñ ÀÚ½ÅÀÇ È¨ÆäÀÌÁö ÁÖ¼Ò : http://ebiz7.net/myte am/index.php?id=º»ÀξÆÀ̵ð

    3. ¿Ö »¡¸® °¡ÀÔÇØ¾ß Çϴ°¡? Áö±ÝÀº ³×Æ®¿öÅ© ¸¶ÄÉÆà ÇìµåµéÀÌ °¡ÀÔÇÏ´Â ½Ã±âÀÔ´Ï´Ù. 
    ÀÎÅÍ³Ý °¡ÀÔ ½Ã½ºÅÛÀ» °¡µ¿ ½ÃÀÛÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¿À´ÃÀº ¾à200¸í... Á¤¸» ±âÇϱ޼öÀûÀ¸·Î °¡ÀÔÇÏ°í ÀÖ½À´Ï´Ù.

    4. ¹«¾ùÀ» ¾î¶»°Ô ÇØ¾ß Çϴ°¡?
    °¡ÀÔ°ú µ¿½Ã¿¡ Àú¿Í °°Àº ÀÚµ¿ È«º¸¿ë ȨÆäÀÌÁö¸¦ ¹«·á·Î Á¦°øÇÕ´Ï´Ù. »ç¶÷°ú »ç¶÷ÀÌ ¿¬°áµÇ¾î ¹«ÇÑ ÀÌÀÍÀÌ Ã¢ÃâµË´Ï´Ù. ±×ÀÌ»óÀÇ ³ë·ÂÀº ´ç½ÅÀ» ºÎÀÚ·Î ¸¸µé °ÍÀÔ´Ï´Ù. ÇÔ²² Çϱ⠶§¹®¿¡ ¼º°ø ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    ¹«·á°¡»ó°¡ÀÔ : http://one.good.to

    Áö±Ý ¹Ù·Î Á¢¼ÓÇϼ¼¿ä ³»ÀÏÀÌ¸é ±×¸¸Å­ ´Ê½À´Ï´Ù

    http://cafe.daum.net/newsamo (°ü·ÃÁ¤º¸)


    ¢º ¼º°øÀº µµÀüÇÏ´Â ÀÚÀÇ °ÍÀÔ´Ï´Ù. Æò»ýÀ» º¸Àå¹ÞÀ» ¼ö ÀÖ´Â ÃÖ»óÀÇ ºñÁö´Ï½º ,³×Æ®¿÷ ¸¶ÄÉÆÿ¡¼­ ²ÞÀ» ¾ò¾î °¡½Ê½Ã¿À. Ç×»ó Á¤º¸¿¡ ¾Õ¼± ÀÚ°¡ ¼º°øÇÏ´Â °Í °°½À´Ï´Ù.

    »çÀÌÆ® Á¢¼Ó(ÀúÀÇ È¨ÆäÀÌÁö)¸¦ Àß °Ë»öÇØ º¸½Å ÈÄ, °áÁ¤ÇϼÌÀ¸¸é ÇÏ´ÜÀÇ °¡»óȸ¿øµî·ÏÀ» Ŭ¸¯, ¹«·áµî·Ï ÇÏ½Ã°í ¿¬¶ô Áֽøé ÃÊÇì´õ ¸®´õ»ç¾÷Àڷμ­ÀÇ ½Ã½ºÅÛ°ú »ç¾÷ÁøÇà¿¡ °ü·ÃµÈ »ó¼¼ÇÑ ¹æÇâÁ¦½Ã¸¦ ÇÏ¿© µå¸®°Ú½À´Ï´Ù.

    °¨»çÇÕ´Ï´Ù. From winandy@informatik.uni-bonn.de Wed Apr 17 08:59:30 2002 Received: from postfix.informatik.uni-bonn.de ([131.220.131.28]) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 16xp22-0003iJ-00 for ; Wed, 17 Apr 2002 08:59:30 -0400 Received: from informatik.uni-bonn.de (gate.tillmannhaus.stw-bonn.de [131.220.116.36]) by postfix.informatik.uni-bonn.de (Postfix) with ESMTP id B4E3F70C9D for ; Wed, 17 Apr 2002 14:59:27 +0200 (MEST) (envelope-from winandy@informatik.uni-bonn.de) (envelope-to classpathx-crypto@gnu.org) (1) (internal use: ta=1, tu=1, te=1, am=P, au=winandy) Message-ID: <3CBD71FD.95C8D91E@informatik.uni-bonn.de> Date: Wed, 17 Apr 2002 15:00:45 +0200 From: Marcel Winandy Organization: (keine) X-Mailer: Mozilla 4.77 [de] (X11; U; Linux 2.4.0-4GB i686) X-Accept-Language: en MIME-Version: 1.0 To: classpathx-crypto@gnu.org Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] Primes and BigInteger Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hello! I've just read that you were wondering about some large primes for which java.math.BigInteger.isProbablePrime() returns 'false'. Well, BigInteger has indeed a bug in its primality test. BigInteger runs Miller-Rabin first. If Miller-Rabin returns 'probable prime' for some number, a second test will be made, using Lucas this time. And there is a bug in that Lucas algorithm of BigInteger. I don't know exactly what is is, because a friend of mine examined several primality test algorithms. He found that bug in BigInteger and told me. However, it was a very silly mistake as far as I remeber - something like +1 instead of -1. But the consequences are enormous - as you have seen. I hope it will help you. Bye, Marcel -- Marcel Winandy EMail: winandy@informatik.uni-bonn.de http://www-student.informatik.uni-bonn.de/~winandy/ From raif@fl.net.au Thu Apr 18 14:20:42 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 16yGWQ-0006aO-00 for ; Thu, 18 Apr 2002 14:20:42 -0400 Received: from solomon (a3-p50.syd.fl.net.au [202.181.1.114]) by delenn.fl.net.au (Postfix) with ESMTP id 8CAD017FE49; Fri, 19 Apr 2002 04:23:04 +1000 (EST) Message-ID: <009901c1e705$9f5253b0$7201b5ca@solomon> From: "Raif S. Naffah" To: "Marcel Winandy" , References: <3CBD71FD.95C8D91E@informatik.uni-bonn.de> Subject: Re: [Classpathx-crypto] Primes and BigInteger Date: Fri, 19 Apr 2002 04:16:04 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: well, i guessed it may be the case and that's why i asked for somebody who can inspect the sources (of the JDK) to tell me/us more. thanx for that. the GNU crypto lib solves this problem by implementing a more reliable and i think faster primality test based on Colin Plumb's tests (as the info page states). by the way, is there a bug number in the bug parade of Sun that points to this problem? cheers; rsn ----- Original Message ----- From: "Marcel Winandy" To: Sent: Wednesday, April 17, 2002 11:00 PM Subject: [Classpathx-crypto] Primes and BigInteger > Hello! > > I've just read that you were wondering about some large primes for which > java.math.BigInteger.isProbablePrime() returns 'false'. Well, BigInteger > has indeed a bug in its primality test. BigInteger runs Miller-Rabin > first. If Miller-Rabin returns 'probable prime' for some number, a > second test will be made, using Lucas this time. And there is a bug in > that Lucas algorithm of BigInteger. I don't know exactly what is is, > because a friend of mine examined several primality test algorithms. He > found that bug in BigInteger and told me. However, it was a very silly > mistake as far as I remeber - something like +1 instead of -1. But the > consequences are enormous - as you have seen. > > I hope it will help you. > > Bye, > Marcel > -- > Marcel Winandy > EMail: winandy@informatik.uni-bonn.de > http://www-student.informatik.uni-bonn.de/~winandy/ > > _______________________________________________ > Classpathx-crypto mailing list > Classpathx-crypto@gnu.org > http://mail.gnu.org/mailman/listinfo/classpathx-crypto > From nferrier@tapsellferrier.co.uk Wed Apr 24 12:27:03 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 170Pbj-0005En-00 for ; Wed, 24 Apr 2002 12:27:03 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 170Q2R-0000VA-00; Wed, 24 Apr 2002 17:54:39 +0100 To: classpathx-crypto@gnu.org From: Nic Ferrier Date: 24 Apr 2002 17:49:04 +0100 Message-ID: <87it6h6nzz.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: [Classpathx-crypto] Build system. Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: I've seen no comment on the build system that I put up on the FTP site. If no one has objected by next week I'll commit my changes to CVS. Thanks. Nic From raif@fl.net.au Wed Apr 24 15:50:22 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 170SmU-00020o-00 for ; Wed, 24 Apr 2002 15:50:22 -0400 Received: from solomon (a4-p47.syd.fl.net.au [202.181.2.111]) by delenn.fl.net.au (Postfix) with ESMTP id 908D417FCC1; Thu, 25 Apr 2002 05:53:01 +1000 (EST) Message-ID: <004701c1ebc9$2b36a580$6f02b5ca@solomon> From: "Raif S. Naffah" To: , "Nic Ferrier" References: <87it6h6nzz.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Subject: Re: [Classpathx-crypto] Build system. Date: Thu, 25 Apr 2002 05:49:37 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: i'll try it this weekend and will let you know how it fairs on my W2k+cygwin. cheers; rsn ----- Original Message ----- From: "Nic Ferrier" To: Sent: Thursday, April 25, 2002 2:49 AM Subject: [Classpathx-crypto] Build system. > I've seen no comment on the build system that I put up on the FTP > site. > > If no one has objected by next week I'll commit my changes to CVS. > > > Thanks. > > > Nic > > > _______________________________________________ > Classpathx-crypto mailing list > Classpathx-crypto@gnu.org > http://mail.gnu.org/mailman/listinfo/classpathx-crypto > From mstatic@metastatic.org Tue Jun 04 20:15:12 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17FOSF-0002Ef-00 for ; Tue, 04 Jun 2002 20:15:11 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 7773E5282E for ; Tue, 4 Jun 2002 17:15:09 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g550F9S13622 for ; Tue, 4 Jun 2002 17:15:09 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Tue, 4 Jun 2002 17:15:08 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: classpathx-crypto@gnu.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: [Classpathx-crypto] [patch] Serpent cipher Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hello, I've been doing some studying in cryptography, came across GNU classpathx, and have been working on implementing some ciphers using the crypto API. The patch which follows (which is longish, but I didn't want to do an attachment---please admonish if this is poor etiquette) is an implementation of Serpent which appears correct in a few tests. It does not, as far as I know, refer to any non-free techniques---is uses some optimized S-box functions found by Dag Arne Osvik which are implemented in a GPL'd ADA implementation from http://www.ii.uib.no/~gisle/serpent.html. The patch is based on a recent CVS checkout and updates the gcj Makefile.{in,am}, the classes Registry and CipherFactory, and adds the Serpent class itself. Classpathx is welcome to use it. Cheers, -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ === cut here === diff -Naurw crypto/gcj/source/Makefile.am crypto.1/gcj/source/Makefile.am --- crypto/gcj/source/Makefile.am Wed May 29 02:02:35 2002 +++ crypto.1/gcj/source/Makefile.am Tue Jun 4 16:04:52 2002 @@ -86,6 +86,7 @@ gnu/crypto/cipher/Khazad.java \ gnu/crypto/cipher/NullCipher.java \ gnu/crypto/cipher/Rijndael.java \ + gnu/crypto/cipher/Serpent.java \ gnu/crypto/cipher/Square.java \ gnu/crypto/cipher/Twofish.java \ gnu/crypto/hash/BaseHash.java \ diff -Naurw crypto/gcj/source/Makefile.in crypto.1/gcj/source/Makefile.in --- crypto/gcj/source/Makefile.in Wed May 29 02:02:35 2002 +++ crypto.1/gcj/source/Makefile.in Tue Jun 4 16:05:44 2002 @@ -203,6 +176,7 @@ gnu/crypto/cipher/Khazad.java \ gnu/crypto/cipher/NullCipher.java \ gnu/crypto/cipher/Rijndael.java \ + gnu/crypto/cipher/Serpent.java \ gnu/crypto/cipher/Square.java \ gnu/crypto/cipher/Twofish.java \ gnu/crypto/hash/BaseHash.java \ @@ -297,9 +271,9 @@ gnu/crypto/cipher/IBlockCipher.lo \ gnu/crypto/cipher/IBlockCipherSpi.lo \ gnu/crypto/cipher/Khazad.lo gnu/crypto/cipher/NullCipher.lo \ - gnu/crypto/cipher/Rijndael.lo gnu/crypto/cipher/Square.lo \ - gnu/crypto/cipher/Twofish.lo gnu/crypto/hash/BaseHash.lo \ - gnu/crypto/hash/HashFactory.lo \ + gnu/crypto/cipher/Rijndael.lo gnu/crypto/cipher/Serpent.lo \ + gnu/crypto/cipher/Square.lo gnu/crypto/cipher/Twofish.lo \ + gnu/crypto/hash/BaseHash.lo gnu/crypto/hash/HashFactory.lo \ gnu/crypto/hash/IMessageDigest.lo gnu/crypto/hash/MD5.lo \ gnu/crypto/hash/RipeMD128.lo gnu/crypto/hash/RipeMD160.lo \ gnu/crypto/hash/Sha160.lo gnu/crypto/hash/Whirlpool.lo \ @@ -388,6 +366,7 @@ @AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/Khazad.Plo \ @AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/NullCipher.Plo \ @AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/Rijndael.Plo \ +@AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/Serpent.Plo \ @AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/Square.Plo \ @AMDEP_TRUE@ gnu/crypto/cipher/$(DEPDIR)/Twofish.Plo \ @AMDEP_TRUE@ gnu/crypto/hash/$(DEPDIR)/BaseHash.Plo \ @@ -561,6 +534,9 @@ gnu/crypto/cipher/Rijndael.lo: gnu/crypto/cipher/Rijndael.java \ gnu/crypto/cipher/.dirstamp \ gnu/crypto/cipher/$(DEPDIR)/.dirstamp +gnu/crypto/cipher/Serpent.lo: gnu/crypto/cipher/Serpent.java \ + gnu/crypto/cipher/.dirstamp \ + gnu/crypto/cipher/$(DEPDIR)/.dirstamp gnu/crypto/cipher/Square.lo: gnu/crypto/cipher/Square.java \ gnu/crypto/cipher/.dirstamp \ gnu/crypto/cipher/$(DEPDIR)/.dirstamp @@ -880,6 +852,8 @@ -rm -f gnu/crypto/cipher/NullCipher.lo -rm -f gnu/crypto/cipher/Rijndael.$(OBJEXT) -rm -f gnu/crypto/cipher/Rijndael.lo + -rm -f gnu/crypto/cipher/Serpent.$(OBJEXT) + -rm -f gnu/crypto/cipher/Serpent.lo -rm -f gnu/crypto/cipher/Square.$(OBJEXT) -rm -f gnu/crypto/cipher/Square.lo -rm -f gnu/crypto/cipher/Twofish.$(OBJEXT) @@ -1075,6 +1049,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/Khazad.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/NullCipher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/Rijndael.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/Serpent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/Square.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/cipher/$(DEPDIR)/Twofish.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/crypto/hash/$(DEPDIR)/BaseHash.Plo@am__quote@ @@ -1340,6 +1315,24 @@ @AMDEP_TRUE@ $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(LIBTOOL) --mode=compile $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o gnu/crypto/cipher/Rijndael.lo `test -f 'gnu/crypto/cipher/Rijndael.java' || echo '$(srcdir)/'`gnu/crypto/cipher/Rijndael.java +gnu/crypto/cipher/Serpent.o: gnu/crypto/cipher/Serpent.java +@AMDEP_TRUE@ source='gnu/crypto/cipher/Serpent.java' object='gnu/crypto/cipher/Serpent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.Po' tmpdepfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o gnu/crypto/cipher/Serpent.o `test -f 'gnu/crypto/cipher/Serpent.java' || echo '$(srcdir)/'`gnu/crypto/cipher/Serpent.java + +gnu/crypto/cipher/Serpent.obj: gnu/crypto/cipher/Serpent.java +@AMDEP_TRUE@ source='gnu/crypto/cipher/Serpent.java' object='gnu/crypto/cipher/Serpent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.Po' tmpdepfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o gnu/crypto/cipher/Serpent.obj `cygpath -w gnu/crypto/cipher/Serpent.java` + +gnu/crypto/cipher/Serpent.lo: gnu/crypto/cipher/Serpent.java +@AMDEP_TRUE@ source='gnu/crypto/cipher/Serpent.java' object='gnu/crypto/cipher/Serpent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.Plo' tmpdepfile='gnu/crypto/cipher/$(DEPDIR)/Serpent.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LIBTOOL) --mode=compile $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o gnu/crypto/cipher/Serpent.lo `test -f 'gnu/crypto/cipher/Serpent.java' || echo '$(srcdir)/'`gnu/crypto/cipher/Serpent.java + gnu/crypto/cipher/Square.o: gnu/crypto/cipher/Square.java @AMDEP_TRUE@ source='gnu/crypto/cipher/Square.java' object='gnu/crypto/cipher/Square.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='gnu/crypto/cipher/$(DEPDIR)/Square.Po' tmpdepfile='gnu/crypto/cipher/$(DEPDIR)/Square.TPo' @AMDEPBACKSLASH@ diff -Naurw crypto/source/gnu/crypto/Registry.java crypto.1/source/gnu/crypto/Registry.java --- crypto/source/gnu/crypto/Registry.java Fri Jan 11 13:58:27 2002 +++ crypto.1/source/gnu/crypto/Registry.java Tue Jun 4 16:24:53 2002 @@ -45,6 +45,7 @@ String ANUBIS_CIPHER = "anubis"; String KHAZAD_CIPHER = "khazad"; String RIJNDAEL_CIPHER = "rijndael"; + String SERPENT_CIPHER = "serpent"; String SQUARE_CIPHER = "square"; String TWOFISH_CIPHER = "twofish"; String NULL_CIPHER = "null"; diff -Naurw crypto/source/gnu/crypto/cipher/CipherFactory.java crypto.1/source/gnu/crypto/cipher/CipherFactory.java --- crypto/source/gnu/crypto/cipher/CipherFactory.java Fri Jan 11 13:57:28 2002 +++ crypto.1/source/gnu/crypto/cipher/CipherFactory.java Tue Jun 4 16:18:25 2002 @@ -82,6 +82,8 @@ } else if (name.equalsIgnoreCase(RIJNDAEL_CIPHER) || name.equalsIgnoreCase(AES_CIPHER)) { result = new Rijndael(); + } else if (name.equalsIgnoreCase(SERPENT_CIPHER)) { + result = new Serpent(); } else if (name.equalsIgnoreCase(SQUARE_CIPHER)) { result = new Square(); } else if (name.equalsIgnoreCase(TWOFISH_CIPHER)) { @@ -108,6 +110,7 @@ hs.add(ANUBIS_CIPHER); hs.add(KHAZAD_CIPHER); hs.add(RIJNDAEL_CIPHER); + hs.add(SERPENT_CIPHER); hs.add(SQUARE_CIPHER); hs.add(TWOFISH_CIPHER); hs.add(NULL_CIPHER); diff -Naurw crypto/source/gnu/crypto/cipher/Serpent.java crypto.1/source/gnu/crypto/cipher/Serpent.java --- crypto/source/gnu/crypto/cipher/Serpent.java Wed Dec 31 16:00:00 1969 +++ crypto.1/source/gnu/crypto/cipher/Serpent.java Tue Jun 4 14:21:54 2002 @@ -0,0 +1,740 @@ +package gnu.crypto.cipher; + +// ---------------------------------------------------------------------------- +// $Id: classpathx-crypto.mbox,v 1.1 2002/10/27 09:40:41 raif Exp $ +// +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 of the License or (at your option) any +// later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU General Public License along with +// this program; see the file COPYING. If not, write to the +// +// Free Software Foundation Inc., +// 59 Temple Place - Suite 330, +// Boston, MA 02111-1307 +// USA +// +// As a special exception, if you link this library with other files to produce +// an executable, this library does not by itself cause the resulting +// executable to be covered by the GNU General Public License. This exception +// does not however invalidate any other reasons why the executable file might +// be covered by the GNU General Public License. +// ---------------------------------------------------------------------------- + +import gnu.crypto.Registry; + +import java.util.Collections; +import java.util.Iterator; +import java.security.InvalidKeyException; + +/** + * Serpent is a 32-round substitution-permutation network block cipher, + * operating on 128-bit blocks and accepting keys of 128, 192, and 256 + * bits in length. At each round the plaintext is XORed with a 128 bit + * portion of the session key -- a 4224 bit key computed from the input + * key -- then one of eight S-boxes are applied, and finally a simple + * linear transformation is done. Decryption does the exact same thing + * in reverse order, and using the eight inverses of the S-boxes. + *

    + * Serpent was designed by Ross Anderson, Eli Biham, and Lars Knudsen as + * a proposed cipher for the Advanced Encryption Standard. + *

    + * Reference: Serpent: A + * Candidate Block Cipher for the Advanced Encryption Standard. + *

    + * Serpent can be sped up greatly by replacing S-box substitution with a + * sequence of binary operations, and the optimal implementation depends + * upon finding the fastest sequence of binary operations that reproduce + * this substitution. This implementation uses the S-boxes discovered by + * Dag Arne Osvik, which are + * optimized for the Pentium family of processors. + * + * @version $Revision: 1.1 $ + */ +public class Serpent extends BaseCipher { + + // Constants and variables + // ----------------------------------------------------------------- + + private static final String NAME = "serpent"; + + private static final int DEFAULT_KEY_SIZE = 32; + private static final int DEFAULT_BLOCK_SIZE = 16; + private static final int ROUNDS = 32; + + /** The fractional part of the golden ratio, (sqrt(5)+1)/2. */ + private static final int PHI = 0x9e3779b9; + + // Constructors + // ----------------------------------------------------------------- + + /** Trivial zero-argument constructor. */ + public Serpent() { + super(Registry.SERPENT_CIPHER, DEFAULT_BLOCK_SIZE, DEFAULT_KEY_SIZE); + } + + // Implementation of the Cloneable interface + // ----------------------------------------------------------------- + + public Object clone() { + return new Serpent(); + } + + // Implementations of abstract methods from BaseCipher + // ----------------------------------------------------------------- + + public Iterator blockSizes() { + return Collections.singleton(new Integer(DEFAULT_BLOCK_SIZE)).iterator(); + } + + public Iterator keySizes() { + return new Iterator() { + int i = 0; + // Support 128, 192, and 256 bit keys. + Integer[] keySizes = { + new Integer(16), new Integer(24), new Integer(32) + }; + + public boolean hasNext() { + return i < keySizes.length; + } + + public Object next() { + if (hasNext()) { + return keySizes[i++]; + } + return null; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + + public Object + makeKey(byte[] key, int blockSize) throws InvalidKeyException { + // Not strictly true, but here to conform with the AES proposal. + // This restriction can be removed if deemed necessary. + if (key.length != 16 && key.length != 24 && key.length != 32) { + throw new InvalidKeyException("Key length is not 16, 24, or 32 bytes"); + } + + // Here w is our "pre-key". + int[] w = new int[4*(ROUNDS+1)]; + int i, j; + for (i = 0, j = key.length-4; i < 8 && j >= 0; i++) { + w[i] = (key[j ] & 0xff) << 24 | (key[j+1] & 0xff) << 16 | + (key[j+2] & 0xff) << 8 | (key[j+3] & 0xff); + j -= 4; + } + // Pad key if < 256 bits. + if (i != 8) { + w[i] = 1; + } + // Transform using w_i-8 ... w_i-1 + for (i = 8; i < 16; i++) { + int t = w[i-8] ^ w[i-5] ^ w[i-3] ^ w[i-1] ^ PHI ^ (i-8); + w[i] = t << 11 | t >>> 21; + } + // Translate by 8. + for (i = 0; i < 8; i++) { + w[i] = w[i+8]; + } + // Transform the rest of the key. + for (i = 8; i < w.length; i++) { + int t = w[i-8] ^ w[i-5] ^ w[i-3] ^ w[i-1] ^ PHI ^ i; + w[i] = t << 11 | t >>> 21; + } + + // After these s-boxes the pre-key (w, above) will become the + // session key (w, below). + sbox3(w[ 0], w[ 1], w[ 2], w[ 3], w, 0); + sbox2(w[ 4], w[ 5], w[ 6], w[ 7], w, 4); + sbox1(w[ 8], w[ 9], w[ 10], w[ 11], w, 8); + sbox0(w[ 12], w[ 13], w[ 14], w[ 15], w, 12); + sbox7(w[ 16], w[ 17], w[ 18], w[ 19], w, 16); + sbox6(w[ 20], w[ 21], w[ 22], w[ 23], w, 20); + sbox5(w[ 24], w[ 25], w[ 26], w[ 27], w, 24); + sbox4(w[ 28], w[ 29], w[ 30], w[ 31], w, 28); + sbox3(w[ 32], w[ 33], w[ 34], w[ 35], w, 32); + sbox2(w[ 36], w[ 37], w[ 38], w[ 39], w, 36); + sbox1(w[ 40], w[ 41], w[ 42], w[ 43], w, 40); + sbox0(w[ 44], w[ 45], w[ 46], w[ 47], w, 44); + sbox7(w[ 48], w[ 49], w[ 50], w[ 51], w, 48); + sbox6(w[ 52], w[ 53], w[ 54], w[ 55], w, 52); + sbox5(w[ 56], w[ 57], w[ 58], w[ 59], w, 56); + sbox4(w[ 60], w[ 61], w[ 62], w[ 63], w, 60); + sbox3(w[ 64], w[ 65], w[ 66], w[ 67], w, 64); + sbox2(w[ 68], w[ 69], w[ 70], w[ 71], w, 68); + sbox1(w[ 72], w[ 73], w[ 74], w[ 75], w, 72); + sbox0(w[ 76], w[ 77], w[ 78], w[ 79], w, 76); + sbox7(w[ 80], w[ 81], w[ 82], w[ 83], w, 80); + sbox6(w[ 84], w[ 85], w[ 86], w[ 87], w, 84); + sbox5(w[ 88], w[ 89], w[ 90], w[ 91], w, 88); + sbox4(w[ 92], w[ 93], w[ 94], w[ 95], w, 92); + sbox3(w[ 96], w[ 97], w[ 98], w[ 99], w, 96); + sbox2(w[100], w[101], w[102], w[103], w, 100); + sbox1(w[104], w[105], w[106], w[107], w, 104); + sbox0(w[108], w[109], w[110], w[111], w, 108); + sbox7(w[112], w[113], w[114], w[115], w, 112); + sbox6(w[116], w[117], w[118], w[119], w, 116); + sbox5(w[120], w[121], w[122], w[123], w, 120); + sbox4(w[124], w[125], w[126], w[127], w, 124); + sbox3(w[128], w[129], w[130], w[131], w, 128); + + return w; + } + + public + void encrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) { + int[] key = (int[]) K; + int[] x = new int[4]; + x[3] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[2] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[1] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[0] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + + sbox0(key[ 0]^x[0], key[ 1]^x[1], key[ 2]^x[2], key[ 3]^x[3], x, 0); + transform(x); + sbox1(key[ 4]^x[0], key[ 5]^x[1], key[ 6]^x[2], key[ 7]^x[3], x, 0); + transform(x); + sbox2(key[ 8]^x[0], key[ 9]^x[1], key[ 10]^x[2], key[ 11]^x[3], x, 0); + transform(x); + sbox3(key[ 12]^x[0], key[ 13]^x[1], key[ 14]^x[2], key[ 15]^x[3], x, 0); + transform(x); + sbox4(key[ 16]^x[0], key[ 17]^x[1], key[ 18]^x[2], key[ 19]^x[3], x, 0); + transform(x); + sbox5(key[ 20]^x[0], key[ 21]^x[1], key[ 22]^x[2], key[ 23]^x[3], x, 0); + transform(x); + sbox6(key[ 24]^x[0], key[ 25]^x[1], key[ 26]^x[2], key[ 27]^x[3], x, 0); + transform(x); + sbox7(key[ 28]^x[0], key[ 29]^x[1], key[ 30]^x[2], key[ 31]^x[3], x, 0); + transform(x); + sbox0(key[ 32]^x[0], key[ 33]^x[1], key[ 34]^x[2], key[ 35]^x[3], x, 0); + transform(x); + sbox1(key[ 36]^x[0], key[ 37]^x[1], key[ 38]^x[2], key[ 39]^x[3], x, 0); + transform(x); + sbox2(key[ 40]^x[0], key[ 41]^x[1], key[ 42]^x[2], key[ 43]^x[3], x, 0); + transform(x); + sbox3(key[ 44]^x[0], key[ 45]^x[1], key[ 46]^x[2], key[ 47]^x[3], x, 0); + transform(x); + sbox4(key[ 48]^x[0], key[ 49]^x[1], key[ 50]^x[2], key[ 51]^x[3], x, 0); + transform(x); + sbox5(key[ 52]^x[0], key[ 53]^x[1], key[ 54]^x[2], key[ 55]^x[3], x, 0); + transform(x); + sbox6(key[ 56]^x[0], key[ 57]^x[1], key[ 58]^x[2], key[ 59]^x[3], x, 0); + transform(x); + sbox7(key[ 60]^x[0], key[ 61]^x[1], key[ 62]^x[2], key[ 63]^x[3], x, 0); + transform(x); + sbox0(key[ 64]^x[0], key[ 65]^x[1], key[ 66]^x[2], key[ 67]^x[3], x, 0); + transform(x); + sbox1(key[ 68]^x[0], key[ 69]^x[1], key[ 70]^x[2], key[ 71]^x[3], x, 0); + transform(x); + sbox2(key[ 72]^x[0], key[ 73]^x[1], key[ 74]^x[2], key[ 75]^x[3], x, 0); + transform(x); + sbox3(key[ 76]^x[0], key[ 77]^x[1], key[ 78]^x[2], key[ 79]^x[3], x, 0); + transform(x); + sbox4(key[ 80]^x[0], key[ 81]^x[1], key[ 82]^x[2], key[ 83]^x[3], x, 0); + transform(x); + sbox5(key[ 84]^x[0], key[ 85]^x[1], key[ 86]^x[2], key[ 87]^x[3], x, 0); + transform(x); + sbox6(key[ 88]^x[0], key[ 89]^x[1], key[ 90]^x[2], key[ 91]^x[3], x, 0); + transform(x); + sbox7(key[ 92]^x[0], key[ 93]^x[1], key[ 94]^x[2], key[ 95]^x[3], x, 0); + transform(x); + sbox0(key[ 96]^x[0], key[ 97]^x[1], key[ 98]^x[2], key[ 99]^x[3], x, 0); + transform(x); + sbox1(key[100]^x[0], key[101]^x[1], key[102]^x[2], key[103]^x[3], x, 0); + transform(x); + sbox2(key[104]^x[0], key[105]^x[1], key[106]^x[2], key[107]^x[3], x, 0); + transform(x); + sbox3(key[108]^x[0], key[109]^x[1], key[110]^x[2], key[111]^x[3], x, 0); + transform(x); + sbox4(key[112]^x[0], key[113]^x[1], key[114]^x[2], key[115]^x[3], x, 0); + transform(x); + sbox5(key[116]^x[0], key[117]^x[1], key[118]^x[2], key[119]^x[3], x, 0); + transform(x); + sbox6(key[120]^x[0], key[121]^x[1], key[122]^x[2], key[123]^x[3], x, 0); + transform(x); + sbox7(key[124]^x[0], key[125]^x[1], key[126]^x[2], key[127]^x[3], x, 0); + + x[0] ^= key[128]; + x[1] ^= key[129]; + x[2] ^= key[130]; + x[3] ^= key[131]; + + for (int j = x.length-1; j >= 0; j--) { + out[o++] = (byte) (x[j] >>> 24); + out[o++] = (byte) (x[j] >>> 16); + out[o++] = (byte) (x[j] >>> 8); + out[o++] = (byte) x[j]; + } + } + + public + void decrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) { + int[] key = (int[]) K; + int[] x = new int[4]; + x[3] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[2] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[1] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + x[0] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 | + (in[i++] & 0xff) << 8 | (in[i++] & 0xff); + + sboxI7(key[128]^x[0], key[129]^x[1], key[130]^x[2], key[131]^x[3], x, 0); + transformInv(x, key, 124); + sboxI6(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 120); + sboxI5(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 116); + sboxI4(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 112); + sboxI3(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 108); + sboxI2(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 104); + sboxI1(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 100); + sboxI0(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 96); + sboxI7(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 92); + sboxI6(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 88); + sboxI5(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 84); + sboxI4(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 80); + sboxI3(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 76); + sboxI2(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 72); + sboxI1(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 68); + sboxI0(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 64); + sboxI7(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 60); + sboxI6(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 56); + sboxI5(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 52); + sboxI4(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 48); + sboxI3(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 44); + sboxI2(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 40); + sboxI1(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 36); + sboxI0(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 32); + sboxI7(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 28); + sboxI6(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 24); + sboxI5(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 20); + sboxI4(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 16); + sboxI3(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 12); + sboxI2(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 8); + sboxI1(x[0], x[1], x[2], x[3], x, 0); + transformInv(x, key, 4); + sboxI0(x[0], x[1], x[2], x[3], x, 0); + + x[0] ^= key[0]; + x[1] ^= key[1]; + x[2] ^= key[2]; + x[3] ^= key[3]; + + for (int j = x.length-1; j >= 0; j--) { + out[o++] = (byte) (x[j] >>> 24); + out[o++] = (byte) (x[j] >>> 16); + out[o++] = (byte) (x[j] >>> 8); + out[o++] = (byte) x[j]; + } + } + + // Own methods + // ----------------------------------------------------------------- + + /** Serpent's linear transformation. */ + private void transform(int[] x) { + x[0] = x[0] << 13 | x[0] >>> 19; + x[2] = x[2] << 3 | x[2] >>> 29; + x[1] = x[1] ^ x[0] ^ x[2]; + x[3] = x[3] ^ x[2] ^ (x[0] << 3); + x[1] = x[1] << 1 | x[1] >>> 31; + x[3] = x[3] << 7 | x[3] >>> 25; + x[0] = x[0] ^ x[1] ^ x[3]; + x[2] = x[2] ^ x[3] ^ (x[1] << 7); + x[0] = x[0] << 5 | x[0] >>> 27; + x[2] = x[2] << 22 | x[2] >>> 10; + } + + /** + * The inverse linear transformation. The XOR with the key is done + * here to save space above. + * + * @param x The current block being decrypted. + * @param key The session key. + * @param off The index in the key to start from. + */ + private void transformInv(int[] x, int[] key, int off) { + x[0] ^= key[off++]; + x[1] ^= key[off++]; + x[2] ^= key[off++]; + x[3] ^= key[off++]; + + x[2] = x[2] >>> 22 | x[2] << 10; + x[0] = x[0] >>> 5 | x[0] << 27; + x[2] = x[2] ^ x[3] ^ (x[1] << 7); + x[0] = x[0] ^ x[1] ^ x[3]; + x[3] = x[3] >>> 7 | x[3] << 25; + x[1] = x[1] >>> 1 | x[1] << 31; + x[3] = x[3] ^ x[2] ^ (x[0] << 3); + x[1] = x[1] ^ x[0] ^ x[2]; + x[2] = x[2] >>> 3 | x[2] << 29; + x[0] = x[0] >>> 13 | x[0] << 19; + } + + // Bit-flip madness methods + // + // The following S-Box functions were developed by Dag Arne Osvik, + // and are described in his paper, "Speeding up Serpent". They are + // optimized to perform on the Pentium chips, but work well here too. + // + // The methods below are Copyright (C) 2000 Dag Arne Osvik. + + // These methods may be de-assembler-ized (more than one operation in + // each statement) for readability (?) and speed (??). + + /** S-Box 0. */ + private void sbox0(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r1 ^ r2; + r3 ^= r0; + r1 = r1 & r3 ^ r0; + r0 = (r0 | r3) ^ r4; + r4 ^= r3; + r3 ^= r2; + r2 = (r2 | r1) ^ r4; + r4 = ~r4 | r1; + r1 ^= r3 ^ r4; + r3 |= r0; + w[off ] = r1 ^ r3; + w[off+1] = r4 ^ r3; + w[off+2] = r2; + w[off+3] = r0; + } + + /** The inverse of S-Box 0. */ + private void sboxI0(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r1; + r2 = ~r2; + r1 = (r1 | r0) ^ r2; + r4 = ~r4; + r2 |= r4; + r1 ^= r3; + r0 ^= r4; + r2 ^= r0; + r0 &= r3; + r4 ^= r0; + r0 = (r0 | r1) ^ r2; + r3 = r3 ^ r4 ^ r0 ^ r1; + r2 = (r2 ^ r1) & r3; + w[off ] = r0; + w[off+1] = r4 ^ r2; + w[off+2] = r1; + w[off+3] = r3; + } + + /** S-Box 1. */ + private void sbox1(int r0, int r1, int r2, int r3, int[] w, int off) { + r0 = ~r0; + int r4 = r0; + r2 = ~r2; + r0 &= r1; + r2 ^= r0; + r0 |= r3; + r3 ^= r2; + r1 ^= r0; + r0 ^= r4; + r4 |= r1; + r1 ^= r3; + r2 = (r2 | r0) & r4; + r0 ^= r1; + w[off ] = r2; + w[off+1] = r0 & r2 ^ r4; + w[off+2] = r3; + w[off+3] = r1 & r2 ^ r0; + } + + /** The inverse of S-Box 1. */ + private void sboxI1(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r1; + r1 ^= r3; + r3 = r3 & r1 ^ r0; + r4 ^= r2; + r2 ^= r3; + r0 = (r0 | r1) ^ r4 | r2; + r1 ^= r3; + r0 ^= r1; + r1 = (r1 | r3) ^ r0; + r4 = ~r4 ^ r1; + w[off ] = r4; + w[off+1] = r0; + w[off+2] = r3 ^ ((r1 | r0) ^ r0 | r4); + w[off+3] = r2; + } + + /** S-Box 2. */ + private void sbox2(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r0; + r0 = r0 & r2 ^ r3; + r2 = r2 ^ r1 ^ r0; + r3 = (r3 | r4) ^ r1; + r4 ^= r2; + r1 = r3; + r3 = (r3 | r4) ^ r0; + r0 &= r1; + r4 ^= r0; + w[off ] = r2; + w[off+1] = r3; + w[off+2] = r1 ^ r3 ^ r4; + w[off+3] = ~r4; + } + + /** The inverse of S-Box 2. */ + private void sboxI2(int r0, int r1, int r2, int r3, int[] w, int off) { + r2 ^= r3; + r3 ^= r0; + int r4 = r3; + r3 = r3 & r2 ^ r1; + r1 = (r1 | r2) ^ r4; + r4 &= r3; + r2 ^= r3; + r4 = r4 & r0 ^ r2; + r3 = ~r3; + r2 = (r2 & r1 | r0) ^ r3; + r0 = (r0 ^ r3) & r1; + w[off ] = r1; + w[off+1] = r4; + w[off+2] = r2; + w[off+3] = r3 ^ r4 ^ r0; + } + + /** S-Box 3. */ + private void sbox3(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r0; + r0 |= r3; + r3 ^= r1; + r1 &= r4; + r4 = r4 ^ r2 | r1; + r2 ^= r3; + r3 = r3 & r0 ^ r4; + r0 ^= r1; + r4 = r4 & r0 ^ r2; + r1 = (r1 ^ r3 | r0) ^ r2; + r0 ^= r3; + w[off ] = (r1 | r3) ^ r0; + w[off+1] = r1; + w[off+2] = r3; + w[off+3] = r4; + } + + /** Inverse of S-Box 3. */ + private void sboxI3(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r2; + r2 ^= r1; + r0 ^= r2; + r4 = r4 & r2 ^ r0; + r0 &= r1; + r1 ^= r3; + r3 |= r4; + r2 ^= r3; + r0 ^= r3; + r1 ^= r4; + r3 = r3 & r2 ^ r1; + r1 = (r1 ^ r0 | r2) ^ r4; + w[off ] = r2; + w[off+1] = r1; + w[off+2] = r3; + w[off+3] = r0 ^ r3 ^ r1; + } + + /** S-Box 4. */ + private void sbox4(int r0, int r1, int r2, int r3, int[] w, int off) { + r1 ^= r3; + int r4 = r1; + r3 = ~r3; + r2 ^= r3; + r3 ^= r0; + r1 = r1 & r3 ^ r2; + r4 ^= r3; + r0 ^= r4; + r2 = r2 & r4 ^ r0; + r0 &= r1; + r3 ^= r0; + r4 = (r4 | r1) ^ r0; + w[off ] = r1; + w[off+1] = r4 ^ (r2 & r3); + w[off+2] = ~((r0 | r3) ^ r2); + w[off+3] = r3; + } + + /** Inverse of S-Box 4. */ + private void sboxI4(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r2; + r2 = r2 & r3 ^ r1; + r1 = (r1 | r3) & r0; + r4 = r4 ^ r2 ^ r1; + r1 &= r2; + r0 = ~r0; + r3 ^= r4; + r1 ^= r3; + r3 = r3 & r0 ^ r2; + r0 ^= r1; + r3 ^= r0; + w[off ] = r0; + w[off+1] = r3 ^ r0; + w[off+2] = (r2 & r0 ^ r4 | r3) ^ r1; + w[off+3] = r4; + } + + /** S-Box 5. */ + private void sbox5(int r0, int r1, int r2, int r3, int[] w, int off) { + r0 ^= r1; + r1 ^= r3; + int r4 = r1; + r3 = ~r3; + r1 &= r0; + r2 ^= r3; + r1 ^= r2; + r2 |= r4; + r4 ^= r3; + r3 = r3 & r1 ^ r0; + r4 = r4 ^ r1 ^ r2; + w[off ] = r1; + w[off+1] = r3; + w[off+2] = r0 & r3 ^ r4; + w[off+3] = ~(r2 ^ r0) ^ (r4 | r3); + } + + /** Inverse of S-Box 5. */ + private void sboxI5(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r3; + r1 = ~r1; + r2 ^= r1; + r3 = (r3 | r0) ^ r2; + r4 ^= r3; + r2 = (r2 | r1) & r0 ^ r4; + r4 = (r4 | r0) ^ r1 ^ r2; + r1 = r1 & r2 ^ r3; + r3 &= r4; + r4 ^= r1; + w[off ] = r1; + w[off+1] = ~r4; + w[off+2] = r3 ^ r4 ^ r0; + w[off+3] = r2; + } + + /** S-Box 6. */ + private void sbox6(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r3; + r2 = ~r2; + r3 = r3 & r0 ^ r2; + r0 ^= r4; + r2 = (r2 | r4) ^ r0; + r1 ^= r3; + r0 |= r1; + r2 ^= r1; + r4 ^= r0; + r0 = (r0 | r3) ^ r2; + r4 = r4 ^ r3 ^ r0; + w[off ] = r0; + w[off+1] = r1; + w[off+2] = r4; + w[off+3] = r2 & r4 ^ ~r3; + } + + /** Inverse of S-Box 6. */ + private void sboxI6(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r2; + r0 ^= r2; + r2 &= r0; + r4 ^= r3; + r3 ^= r1; + r2 = ~r2 ^ r3; + r4 |= r0; + r0 ^= r2; + r3 ^= r4; + r4 ^= r1; + r1 = r1 & r3 ^ r0; + r0 = r0 ^ r3 | r2; + w[off ] = r1; + w[off+1] = r2; + w[off+2] = r4 ^ r0; + w[off+3] = r3 ^ r1; + } + + /** S-Box 7. */ + private void sbox7(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r1; + r1 = (r1 | r2) ^ r3; + r4 ^= r2; + r2 ^= r1; + r3 = (r3 | r4) & r0; + r4 ^= r2; + r3 ^= r1; + r1 = (r1 | r4) ^ r0; + r0 = (r0 | r4) ^ r2; + r1 ^= r4; + r2 ^= r1; + w[off ] = r4 ^ (~r2 | r0); + w[off+1] = r3; + w[off+2] = r1 & r0 ^ r4; + w[off+3] = r0; + } + + /** Inverse of S-Box 7. */ + private void sboxI7(int r0, int r1, int r2, int r3, int[] w, int off) { + int r4 = r2; + r2 = ~(r2 ^ r0); + r0 &= r3; + r4 |= r3; + r3 ^= r1; + r1 |= r0; + r0 ^= r2; + r2 &= r4; + r3 &= r4; + r1 ^= r2; + r2 ^= r0; + r0 = (r0 | r2) ^ r3; + r4 ^= r1; + w[off ] = r3 ^ r4 ^ r2; + w[off+1] = r0; + w[off+2] = r1; + w[off+3] = (r4 | r0) ^ r2; + } +} From raif@fl.net.au Thu Jun 06 07:10:43 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17FvAA-0001JT-00 for ; Thu, 06 Jun 2002 07:10:43 -0400 Received: from solomon (a4-p27.syd.fl.net.au [202.181.2.91]) by delenn.fl.net.au (Postfix) with ESMTP id C779F17FE0C; Thu, 6 Jun 2002 21:14:38 +1000 (EST) Message-ID: <00e501c20d4a$c8750b50$5b02b5ca@solomon> From: "Raif S. Naffah" To: "Casey Marshall" , References: Subject: Re: [Classpathx-crypto] [patch] Serpent cipher Date: Thu, 6 Jun 2002 21:10:34 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, ----- Original Message ----- From: "Casey Marshall" To: Sent: Wednesday, June 05, 2002 10:15 AM Subject: [Classpathx-crypto] [patch] Serpent cipher > Hello, > > I've been doing some studying in cryptography, came across GNU classpathx, > and have been working on implementing some ciphers using the crypto API. > > The patch which follows (which is longish, but I didn't want to do an > attachment---please admonish if this is poor etiquette) is an > implementation of Serpent which appears correct in a few tests. It does > not, as far as I know, refer to any non-free techniques---is uses some > optimized S-box functions found by Dag Arne Osvik which are implemented > in a GPL'd ADA implementation from http://www.ii.uib.no/~gisle/serpent.html. thanks a bunch for your contribution :-) we dont have an established etiquette for contributions in this project, besides the coding style :-) but i'm sure we'll come up with something intelligent as we go. > The patch is based on a recent CVS checkout and updates the gcj > Makefile.{in,am}, the classes Registry and CipherFactory, and adds the > Serpent class itself. Classpathx is welcome to use it... i'll add the patches during this weekend, along with some classes and algorithms i've been working on (HMAC, UMAC, etc...). btw, do you have (access to) the test vectors for Serpent? we should have a junit test case to exercise and produce/compare some of the test vectors for every algorithm so as to certify correctness (e.g. source/test/cipher/TestOfSquare). thanks again for your contribution + cheers; rsn From mstatic@metastatic.org Thu Jun 06 18:45:57 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17G60z-0001zh-00 for ; Thu, 06 Jun 2002 18:45:57 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 3ECCB5298B; Thu, 6 Jun 2002 15:45:56 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g56Mjtx28069; Thu, 6 Jun 2002 15:45:56 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Thu, 6 Jun 2002 15:45:55 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] [patch] Serpent cipher In-Reply-To: <00e501c20d4a$c8750b50$5b02b5ca@solomon> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Thu, 6 Jun 2002, Raif S. Naffah wrote: > btw, do you have (access to) the test vectors for Serpent? we should have a > junit test case to exercise and produce/compare some of the test vectors for > every algorithm so as to certify correctness (e.g. > source/test/cipher/TestOfSquare). > Earlier today I generated some KAT and Monte-Carlo test vectors and compared them to those included in the Serpent team's AES submission. The implementation appears correct (at least, my faith in it is a bit stronger). I'll see about putting together a test case for it, however. Also, a question: it appears as though the library is working with the assumption that all of its ciphers are not stateful, ie something like: cipher.encryptBlock(pt, 0, ct, 0); cipher.decryptBlock(ct, 0, cpt, 0); will result in pt==cpt (and this is the case, I think, with all the current cipher algorithms, as well as most others that I'm familiar with). This isn't strictly true, for example, for ARCFOUR, whose s-boxes evolve over time. So would stateful ciphers need to be careful about this (e.g. keeping s-boxes for encryption and decryption), or could one assume that this is not, in practice, the case? (Bonus: yes, ARCFOUR is a stream cipher, so would a seperate interface (IStreamCipher) be a solution?) Cheers, -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Fri Jun 07 09:20:18 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17GJf6-0001c5-00 for ; Fri, 07 Jun 2002 09:20:17 -0400 Received: from solomon (a5-p55.syd.fl.net.au [202.181.2.55]) by delenn.fl.net.au (Postfix) with ESMTP id B555917FE39; Fri, 7 Jun 2002 23:24:17 +1000 (EST) Message-ID: <001101c20e26$0e958020$3702b5ca@solomon> From: "Raif S. Naffah" To: "Casey Marshall" Cc: References: Subject: Re: [Classpathx-crypto] [patch] Serpent cipher Date: Fri, 7 Jun 2002 23:20:11 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, my comments are in-lined below. cheers; rsn ----- Original Message ----- From: "Casey Marshall" To: "Raif S. Naffah" Cc: Sent: Friday, June 07, 2002 8:45 AM Subject: Re: [Classpathx-crypto] [patch] Serpent cipher > On Thu, 6 Jun 2002, Raif S. Naffah wrote: > > > btw, do you have (access to) the test vectors for Serpent? we should have a > > junit test case to exercise and produce/compare some of the test vectors for > > every algorithm so as to certify correctness (e.g. > > source/test/cipher/TestOfSquare). > > > > Earlier today I generated some KAT and Monte-Carlo test vectors and > compared them to those included in the Serpent team's AES submission. > The implementation appears correct (at least, my faith in it is a bit > stronger). I'll see about putting together a test case for it, however. thanks again :-) > Also, a question: it appears as though the library is working with the > assumption that all of its ciphers are not stateful, ie something like: > > cipher.encryptBlock(pt, 0, ct, 0); > cipher.decryptBlock(ct, 0, cpt, 0); > > will result in pt==cpt (and this is the case, I think, with all the > current cipher algorithms, as well as most others that I'm familiar with). > This isn't strictly true... this is always true with symmetric key block ciphers. >..., for example, for ARCFOUR, whose s-boxes evolve > over time. So would stateful ciphers need to be careful about this (e.g. > keeping s-boxes for encryption and decryption), or could one assume that > this is not, in practice, the case? the thing to clarify here is that: a. both types of ciphers are stateful, yet b. one type (the symmetric-key block-ciphers eg. aes, rijndael, serpent, and all gnu.crypto.cipher classes) is invertible, while the other (not yet implemented in gnu.crypto) is not. > (Bonus: yes, ARCFOUR is a stream cipher, so would a seperate interface > (IStreamCipher) be a solution?) yes! as far as i know, it's the only solution. for other types of stream ciphers, have a look at some newly designed stream ciphers, submitted in the NESSIE project --see https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions.html. > > Cheers, > > -- > Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ > > > > _______________________________________________ > Classpathx-crypto mailing list > Classpathx-crypto@gnu.org > http://mail.gnu.org/mailman/listinfo/classpathx-crypto > From mstatic@metastatic.org Sat Jun 08 19:36:53 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17GplM-0005Cm-00 for ; Sat, 08 Jun 2002 19:36:52 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 2445052836 for ; Sat, 8 Jun 2002 16:36:50 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g58NaoN00311 for ; Sat, 8 Jun 2002 16:36:50 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Sat, 8 Jun 2002 16:36:49 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "classpathx-crypto@gnu.org" Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="1439763957-1167906377-1023579409=:31164" Subject: [Classpathx-crypto] TestOfSerpent Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: 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. --1439763957-1167906377-1023579409=:31164 Content-Type: TEXT/PLAIN; charset=US-ASCII As promised, attached is a pared-down version of a test suite for Serpent. It runs all the variable-key and variable-text known-answer tests, and the first ten of each of the monte carlo tests provided in the Serpent team's submission. It also runs the BaseCipher's default symmetry test. This version comes from a test suite that tests all known-answer and all monte carlo tests -- which seemed a bit excessive. It is available at: http://www.metastatic.org/src/serpent-test-full.tar.gz It is 117 kilobytes compressed, and is slow. I figured that this version provided a good enough compromise, and can be trimmed even further by simply deleting answers from the bottoms of the test arrays. If GNU's mailing lists (or you) do not like attachments, the trimmed version can also be found at: http://www.metastatic.org/src/serpent-test.tar.gz Cheers, -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ Also: regular expressions are fun. --1439763957-1167906377-1023579409=:31164 Content-Type: APPLICATION/octet-stream; name="serpent-test.tar.gz" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: TestOfSerpent Content-Disposition: attachment; filename="serpent-test.tar.gz" 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 --1439763957-1167906377-1023579409=:31164-- From raif@fl.net.au Sat Jun 08 20:18:21 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17GqPU-0000ek-00 for ; Sat, 08 Jun 2002 20:18:21 -0400 Received: from fl.net.au (a5-p12.syd.fl.net.au [202.181.2.12]) by delenn.fl.net.au (Postfix) with ESMTP id 6E6AC17FC11; Sun, 9 Jun 2002 10:22:28 +1000 (EST) Message-ID: <3D029ECD.6060809@fl.net.au> Date: Sun, 09 Jun 2002 10:18:21 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] TestOfSerpent References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, Casey Marshall wrote: > As promised, attached is a pared-down version of a test suite for > Serpent. It runs all the variable-key and variable-text known-answer > tests, and the first ten of each of the monte carlo tests provided in > the Serpent team's submission. It also runs the BaseCipher's default > symmetry test. that's simply beautiful. i think all cipher test cases should follow this model. > > This version comes from a test suite that tests all known-answer and all > monte carlo tests -- which seemed a bit excessive. It is available at: > > http://www.metastatic.org/src/serpent-test-full.tar.gz > > It is 117 kilobytes compressed, and is slow. is this the inverse of the NistKAT and NistMCT (in gnu.crypto.tools) tools? since we will be using code from these tools for the test cases, should we look into re-factoring that code to improve code re-usability across the library? > I figured that this version provided a good enough compromise, and can be > trimmed even further by simply deleting answers from the bottoms of the > test arrays. > > If GNU's mailing lists (or you) do not like attachments, the trimmed > version can also be found at: > > http://www.metastatic.org/src/serpent-test.tar.gz > > Cheers, > From raif@fl.net.au Sat Jun 08 20:34:40 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17GqfH-0002SK-00 for ; Sat, 08 Jun 2002 20:34:40 -0400 Received: from fl.net.au (a5-p12.syd.fl.net.au [202.181.2.12]) by delenn.fl.net.au (Postfix) with ESMTP id 389EB17FB73 for ; Sun, 9 Jun 2002 10:38:51 +1000 (EST) Message-ID: <3D02A2A4.6080806@fl.net.au> Date: Sun, 09 Jun 2002 10:34:44 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] latest commits Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: i've committed to the cvs in the last few days the following: 1. Casey Marshall's contribution of Serpent and its test case; 2. a new package gnu.crypto.mac that includes: * HMAC implementation that allows constructing the HMAC over all implemented (now and in the future) hash algorithms (in gnu.crypto.hash), * UMac32 and UHash32 as described in Krovetz & al. submission to the NESSIE --which is also an IETF draft, 3. OFB block cipher mode of operations as described in NIST's recommendations; 4. a new UMacGenerator pseudo-random number generator, described in Krovetz & al. paper using the AES; 5. updated the home page to reflect the new additions; 6. added Casey to the list of AUTHORS; 7. updated the GNU build-related files in the top level as well as in gcj/ and gcj/source --i finally was able to run aclocal, autoconf and automake using the cygwin distribution. pls note that automake (on my cygwin installation is 1.6.1 which required me to change some of the files that were failing cause were relying on version 1.6a. if this causes others build envs to break, then raise your hand. 8. removed some NIST MCT test cases for Anubis with key sizes > 256. 9. removed superfluous characters from some source files that were causing some interpreters to barf. things remaining for the first public release are: * an implementation of the UST (David McGrew's IETF draft), * re-visiting of the test hierarchy and -may be- re-factoring of some gnu.crypto.tool classes, * consensus on the effectiveness of both ANT and GNU build-related tools. cheers; rsn From nferrier@tapsellferrier.co.uk Sun Jun 09 10:03:26 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17H3Hy-0003Qg-00 for ; Sun, 09 Jun 2002 10:03:26 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17H3Lh-0002QM-00; Sun, 09 Jun 2002 15:07:17 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] latest commits References: <3D02A2A4.6080806@fl.net.au> From: Nic Ferrier Date: 09 Jun 2002 15:05:36 +0100 In-Reply-To: <3D02A2A4.6080806@fl.net.au> Message-ID: <87ofek4ken.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 17 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > 7. updated the GNU build-related files in the top level as well as in > gcj/ and gcj/source --i finally was able to run aclocal, autoconf and > automake using the cygwin distribution. pls note that automake (on my > cygwin installation is 1.6.1 which required me to change some of the > files that were failing cause were relying on version 1.6a. if this > causes others build envs to break, then raise your hand. Did you look at the automakejar stuff? It has been recieved with enthusiasm on other GNU java projects and hopefully will become something of a standard for us. I put an example tar in the classpathx ftp dir. Nic From mstatic@metastatic.org Sun Jun 09 15:42:13 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17H8Zo-0006gq-00 for ; Sun, 09 Jun 2002 15:42:13 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 9B3C352811; Sun, 9 Jun 2002 12:42:11 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g59JgAp24693; Sun, 9 Jun 2002 12:42:11 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Sun, 9 Jun 2002 12:42:10 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] TestOfSerpent In-Reply-To: <3D029ECD.6060809@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Raif S. Naffah wrote: > > This version comes from a test suite that tests all known-answer and all > > monte carlo tests -- which seemed a bit excessive. It is available at: > > > > http://www.metastatic.org/src/serpent-test-full.tar.gz > > > > It is 117 kilobytes compressed, and is slow. > > is this the inverse of the NistKAT and NistMCT (in gnu.crypto.tools) tools? > After a fashion, yes. > since we will be using code from these tools for the test cases, should > we look into re-factoring that code to improve code re-usability across > the library? > It did not even occur to me to use that code; I like this idea, however --- one could envision a point where writing a full-conformance test for a particular algorithm would amount to simply including the appropriate test vectors and pointing the program at them. It seems smarter than keeping large, static String arrays. -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Sun Jun 09 22:24:45 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17HErM-0006m5-00 for ; Sun, 09 Jun 2002 22:24:44 -0400 Received: from fl.net.au (a5-p36.syd.fl.net.au [202.181.2.36]) by delenn.fl.net.au (Postfix) with ESMTP id 2C79C17FBDE; Mon, 10 Jun 2002 12:28:54 +1000 (EST) Message-ID: <3D040DEE.2020809@fl.net.au> Date: Mon, 10 Jun 2002 12:24:46 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nic Ferrier Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] latest commits References: <3D02A2A4.6080806@fl.net.au> <87ofek4ken.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Nic, trying to use this failed last time i tried it --see my previous post dated 25/4. cheers; rsn Nic Ferrier wrote: > "Raif S. Naffah" writes: > > >>7. updated the GNU build-related files in the top level as well as in >>gcj/ and gcj/source --i finally was able to run aclocal, autoconf and >>automake using the cygwin distribution. pls note that automake (on my >>cygwin installation is 1.6.1 which required me to change some of the >>files that were failing cause were relying on version 1.6a. if this >>causes others build envs to break, then raise your hand. > > > Did you look at the automakejar stuff? It has been recieved with > enthusiasm on other GNU java projects and hopefully will become > something of a standard for us. > > I put an example tar in the classpathx ftp dir. > > > Nic > > > _______________________________________________ > Classpathx-crypto mailing list > Classpathx-crypto@gnu.org > http://mail.gnu.org/mailman/listinfo/classpathx-crypto > > . > From raif@fl.net.au Sun Jun 09 22:36:44 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17HF2y-00008s-00 for ; Sun, 09 Jun 2002 22:36:44 -0400 Received: from fl.net.au (a5-p36.syd.fl.net.au [202.181.2.36]) by delenn.fl.net.au (Postfix) with ESMTP id 7497F17FBDE; Mon, 10 Jun 2002 12:40:57 +1000 (EST) Message-ID: <3D0410C1.4090100@fl.net.au> Date: Mon, 10 Jun 2002 12:36:49 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] TestOfSerpent References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Casey Marshall wrote: > Raif S. Naffah wrote: > > [...] >>since we will be using code from these tools for the test cases, should >>we look into re-factoring that code to improve code re-usability across >>the library? >> > > > It did not even occur to me to use that code; I like this idea, however > --- one could envision a point where writing a full-conformance test for > a particular algorithm would amount to simply including the appropriate > test vectors and pointing the program at them. It seems smarter than > keeping large, static String arrays. absolutely. Nistxxx tools _emit_ the test vectors, but they also include the code to verify the inverse operation of what they generate. re-factoring that code and re-using your patterns (from TestOfSerpent) would allow: a. ending up with new tools (or added functionality to the existing ones) that _read_ the conformance test vectors and verify them, this time instead of _writing_ them out. b. exposing some methods in these tools, or have'em all use common Helper(s) to do their job and making writing TestOf as simple as feeding the test-case a collection of files (or a directory where those files would be found). does this make sense? cheers; rsn From mstatic@metastatic.org Tue Jun 11 23:10:05 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17HyWK-00046K-00 for ; Tue, 11 Jun 2002 23:10:04 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 6A1815283B for ; Tue, 11 Jun 2002 20:10:03 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g5C3A3F05164 for ; Tue, 11 Jun 2002 20:10:03 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Tue, 11 Jun 2002 20:10:03 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "classpathx-crypto@gnu.org" Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="1439763957-2107575277-1023851403=:4424" Subject: [Classpathx-crypto] MD4 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: 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. --1439763957-2107575277-1023851403=:4424 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello, I had written an implementation of MD4 for another project (now undergoing a complete rewrite) and have reworked it into more of a GNU style than JCE style (the program didn't need anything except MD4 -- and an incorrect version at that -- so genericity seemed useless). It was quite easy to make a patch for Classpathx. Classpathx is welcome to incorporate it, if you like (I know MD4 is not used as much as other algorithms). The patch (gzipped) is attached. -- Casey Marshall < rsdio@metastaic.org > http://metastatic.org/ --1439763957-2107575277-1023851403=:4424 Content-Type: APPLICATION/octet-stream; name="patch-mdfour.gz" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: MD4 Patch Content-Disposition: attachment; filename="patch-mdfour.gz" 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 --1439763957-2107575277-1023851403=:4424-- From raif@fl.net.au Wed Jun 12 06:32:24 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17I5QN-0001e4-00 for ; Wed, 12 Jun 2002 06:32:24 -0400 Received: from fl.net.au (a3-p49.syd.fl.net.au [202.181.1.113]) by delenn.fl.net.au (Postfix) with ESMTP id 2604917FCE9; Wed, 12 Jun 2002 20:36:37 +1000 (EST) Message-ID: <3D07233A.30608@fl.net.au> Date: Wed, 12 Jun 2002 20:32:26 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] MD4 References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, Casey Marshall wrote: > Hello, > > I had written an implementation of MD4 for another project (now undergoing > a complete rewrite) and have reworked it into more of a GNU style than JCE > style (the program didn't need anything except MD4 -- and an incorrect > version at that -- so genericity seemed useless). It was quite easy to make > a patch for Classpathx. got it. > Classpathx is welcome to incorporate it, if you like (I know MD4 is not > used as much as other algorithms). The patch (gzipped) is attached. done :-) thanks for your contribution. i'll update the web page later this week + cheers; rsn From olivier@zipworld.com.au Sat Jun 15 03:45:41 2002 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17J8Fg-0004dU-00 for ; Sat, 15 Jun 2002 03:45:40 -0400 Received: from tournesol.malabar.au (ppp142.dyn20.pacific.net.au [61.8.20.142]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id RAA27763 for ; Sat, 15 Jun 2002 17:45:35 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17J8GM-0003IW-00 for ; Sat, 15 Jun 2002 17:46:22 +1000 Date: Sat, 15 Jun 2002 17:46:21 +1000 To: classpathx-crypto@gnu.org Message-ID: <20020615074621.GA8468@zipworld.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i From: Olivier LF Subject: [Classpathx-crypto] DOS characters in shell scripts. Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Raif, I have checkout the latest and noticed that all shell scripts and Makefiles have the DOS end-of-line character sequence (with the extra ^M). As a result, all the gcj tool chain was broken on Unix! I have fixed all the files under crypto/gcj and also changed few exe permissions for the shell scripts. For some of the files I had to remove them from CVS altogether and re-import. It should be working again now. Next time you checkout, I recommend to remove the gcj directory and checkout a fresh copy. Some CVS clients don't pick up the difference between Unix and DOS ending and fail to update files correspondingly. It is VERY important that all shell scripts and Makefiles use the Unix ending otherwise they won't work under Unix platforms (only Cygwin quietly filters the extra ^M).. In fact, it would propably be better if ALL the source code had the Unix ending, as the Primary target of the gnu project is GNU / Unix systems rather than Windows platforms. Olivier PS: I'll start working on the JUnit test harness for GCJ soonish. -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From nferrier@tapsellferrier.co.uk Sat Jun 15 14:40:39 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17JITW-0006vG-00 for ; Sat, 15 Jun 2002 14:40:38 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17JIY1-0006gQ-00; Sat, 15 Jun 2002 19:45:17 +0100 To: Olivier LF Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. References: <20020615074621.GA8468@zipworld.com.au> From: Nic Ferrier Date: 15 Jun 2002 19:44:30 +0100 In-Reply-To: <20020615074621.GA8468@zipworld.com.au> Message-ID: <873cvol6up.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 16 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Olivier LF writes: > In fact, it would propably be better if ALL the source code had the Unix > ending, as the Primary target of the gnu project is GNU / Unix systems > rather than Windows platforms. It would certainly make life easier. However, Raif does not have a GNU system available to him, if someone donated one, I'm sure he'd use it. In the mean time he's doing excellent work contributing to the ClasspathX project. Nic Ferrier ClasspathX Maintainer. From raif@fl.net.au Sat Jun 15 22:25:14 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17JPj7-0005Fj-00 for ; Sat, 15 Jun 2002 22:25:13 -0400 Received: from fl.net.au (a3-p36.syd.fl.net.au [202.181.1.100]) by delenn.fl.net.au (Postfix) with ESMTP id 660FA17FC35; Sun, 16 Jun 2002 12:29:37 +1000 (EST) Message-ID: <3D0BF713.7000500@fl.net.au> Date: Sun, 16 Jun 2002 12:25:23 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Olivier LF , Nic Ferrier Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. References: <20020615074621.GA8468@zipworld.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Olivier and Nic, thanks Nic for your encouragement and support. my comments are in-lined below. Olivier LF wrote: > Raif, > > I have checkout the latest and noticed that all shell scripts and > Makefiles have the DOS end-of-line character sequence (with the extra > ^M). yes you're right; i just checked them with (gVIM + Cream) --which i should have done instead of using that "intelligent" expensive IDE (you know what i'm talking about!). i'll try to remember doing that every time i touch these files. > As a result, all the gcj tool chain was broken on Unix! sorry about that. > I have fixed all the files under crypto/gcj and also changed few > exe permissions for the shell scripts. > For some of the files I had to remove them from CVS altogether and re-import. > It should be working again now. thanks. > Next time you checkout, I recommend to remove the gcj directory... noted. > It is VERY important that all shell scripts and Makefiles use the Unix > ending otherwise they won't work under Unix platforms (only Cygwin > quietly filters the extra ^M).. > > In fact, it would propably be better if ALL the source code had the Unix > ending, as the Primary target of the gnu project is GNU / Unix systems > rather than Windows platforms. if you check the java sources, you'll notive that this is the case. i think the tool i use wants to be too smart when it comes to (what i considers) plain text files. > > Olivier > > PS: I'll start working on the JUnit test harness for GCJ soonish. good to hear. cheers; rsn From olivier@zipworld.com.au Sun Jun 16 02:46:57 2002 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17JToO-00064J-00 for ; Sun, 16 Jun 2002 02:46:56 -0400 Received: from tournesol.malabar.au (ppp179.dyn20.pacific.net.au [61.8.20.179]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id QAA05492; Sun, 16 Jun 2002 16:46:47 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17JToW-0003BY-00; Sun, 16 Jun 2002 16:47:04 +1000 Date: Sun, 16 Jun 2002 16:47:04 +1000 From: Olivier LF To: "Raif S. Naffah" Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. Message-ID: <20020616064704.GA1962@zipworld.com.au> References: <20020615074621.GA8468@zipworld.com.au> <3D0BF713.7000500@fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D0BF713.7000500@fl.net.au> User-Agent: Mutt/1.3.28i Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Sun, Jun 16, 2002 at 12:25:23PM +1000, Raif S. Naffah wrote: > hello Olivier and Nic, > > thanks Nic for your encouragement and support. my comments are in-lined > below. > Ooops! I am not sure if I sounded aggressive! That was not the intention. I am very sorry, if it is the case. > yes you're right; i just checked them with (gVIM + Cream) --which i > should have done instead of using that "intelligent" expensive IDE (you > know what i'm talking about!). > > i'll try to remember doing that every time i touch these files. One thing that is good, the cvs diff at savanah does pick up the difference for modified files. That is if you change the content of a file and also convert it to unix ending, the file will be fully updated. Strangely enought, it does not work if the only change is a convertion to Unix ending! > >In fact, it would propably be better if ALL the source code had the Unix > >ending, as the Primary target of the gnu project is GNU / Unix systems > >rather than Windows platforms. > > if you check the java sources, you'll notive that this is the case. i > think the tool i use wants to be too smart when it comes to (what i > considers) plain text files. I did open a few files in the test package while working on the JUnit compilation. Some are actually a mix up of DOS and Unix ending (most lines with DOS ending, few with Unix). Anyway, it does not seem to matter much for the java sources, shell scripts and makefiles are more critical. > >PS: I'll start working on the JUnit test harness for GCJ soonish. > > good to hear. > It does work! I ran the test suite, it reports: 101 tests, 13 failures. The failures are not really failures, they all seem to boil down to java.security.Exception from requests for algorithms not available in the gcj standard lib (as opposed to jdk). I need to work more on the makefile before I am ready to commit the update. Oli -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From raif@fl.net.au Sun Jun 16 04:22:02 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17JVIP-0002PE-00 for ; Sun, 16 Jun 2002 04:22:01 -0400 Received: from fl.net.au (a3-p36.syd.fl.net.au [202.181.1.100]) by delenn.fl.net.au (Postfix) with ESMTP id B37AC17FD81; Sun, 16 Jun 2002 18:26:25 +1000 (EST) Message-ID: <3D0C4AB4.7020906@fl.net.au> Date: Sun, 16 Jun 2002 18:22:12 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Olivier LF Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. References: <20020615074621.GA8468@zipworld.com.au> <3D0BF713.7000500@fl.net.au> <20020616064704.GA1962@zipworld.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Olivier LF wrote: > ... >>>PS: I'll start working on the JUnit test harness for GCJ soonish. >> ... > > It does work! I ran the test suite, it reports: > > 101 tests, 13 failures. > > The failures are not really failures, they all seem to boil down to > java.security.Exception from requests for algorithms not available in the > gcj standard lib (as opposed to jdk)... the current codebase --with the gnu.crypto.jce package, which consists of adapters for use by the JCA/JCE-- runs fine using sun's java interpreter; i.e. all tests pass. with that package, the gnu.crypto implements the MD5, SHA-1 (hash) and DSS (signature) that are standard jdk (without the need for any JCE cleanroom or otherwise add-on). is it feasible/wothwhile for the people doing the gcj to include the gnu.crypto in their release? i guess a more exhaustive list of what is failing might give us -me- a better clue of what is still missing. cheers; rsn From nferrier@tapsellferrier.co.uk Sun Jun 16 07:41:51 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17JYPm-000447-00 for ; Sun, 16 Jun 2002 07:41:50 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17JYUM-0000ez-00; Sun, 16 Jun 2002 12:46:34 +0100 To: "Raif S. Naffah" Cc: Olivier LF , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. References: <20020615074621.GA8468@zipworld.com.au> <3D0BF713.7000500@fl.net.au> From: Nic Ferrier Date: 16 Jun 2002 12:45:40 +0100 In-Reply-To: <3D0BF713.7000500@fl.net.au> Message-ID: <87znxvjvkr.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 12 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > yes you're right; i just checked them with (gVIM + Cream) --which i > should have done instead of using that "intelligent" expensive IDE (you > know what i'm talking about!). A suggestion: use emacs on Windows, it does all the line ending conversion for you. Nic From mstatic@metastatic.org Mon Jun 17 19:01:31 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17K5V5-0007ss-00 for ; Mon, 17 Jun 2002 19:01:31 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id B3A04562E4 for ; Mon, 17 Jun 2002 16:01:29 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g5HN1T902557 for ; Mon, 17 Jun 2002 16:01:29 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Mon, 17 Jun 2002 16:01:28 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "classpathx-crypto@gnu.org" Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="1439763957-861381847-1024354888=:28747" Subject: [Classpathx-crypto] PATCH: NIST cipher tester Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: 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. --1439763957-861381847-1024354888=:28747 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello, I've put together a (fairly simple) cipher testing program that will read in the standard test vector files that the NIST AES submissions required; all that is involved in testing an algorithm foo with a 128 bit block size is putting all the test vectors in a directory `tv/foo-128', then instantiating the class test.cipher.NISTCipherTest. The class loads test files with the `getResource' method of java.lang.Class, so the vector files can simply be put into gnu-crypto-test.jar. The patch only adds the class itself, and updates the build scripts and test.cipher.AllTests. I didn't include the test files for the three AES submitted ciphers in Classpathx, because they're probably far too big for this mailing list. I've also noted that in the file `Makefile.in' there is a line that says `gnu/crypto/mac/UMash32.java' which I'm guessing should have read `gnu/crypto/mac/UMac32.java'. Cheers, -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ --1439763957-861381847-1024354888=:28747 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-test Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: NIST cipher test patch Content-Disposition: attachment; filename=patch-test ZGlmZiAtTmF1cncgY3J5cHRvL01ha2VmaWxlLmluIGNyeXB0by4xL01ha2Vm aWxlLmluDQotLS0gY3J5cHRvL01ha2VmaWxlLmluCUZyaSBKdW4gIDcgMjI6 NDc6NDUgMjAwMg0KKysrIGNyeXB0by4xL01ha2VmaWxlLmluCVN1biBKdW4g MTYgMTk6NTI6NDYgMjAwMg0KQEAgLTQ4LDcgKzQ4LDcgQEANCiAJJChTT1VS Q0VESVIpL2dudS9jcnlwdG8vbWFjL0lNYWMuamF2YSBcDQogCSQoU09VUkNF RElSKS9nbnUvY3J5cHRvL21hYy9NYWNGYWN0b3J5LmphdmEgXA0KIAkkKFNP VVJDRURJUikvZ251L2NyeXB0by9tYWMvVUhhc2gzMi5qYXZhIFwNCi0JJChT T1VSQ0VESVIpL2dudS9jcnlwdG8vbWFjL1VNYXNoMzIuamF2YSBcDQorCSQo U09VUkNFRElSKS9nbnUvY3J5cHRvL21hYy9VTWFjMzIuamF2YSBcDQogCVwN CiAJJChTT1VSQ0VESVIpL2dudS9jcnlwdG8vbW9kZS9CYXNlTW9kZS5qYXZh IFwNCiAJJChTT1VSQ0VESVIpL2dudS9jcnlwdG8vbW9kZS9DVFIuamF2YSBc DQpAQCAtMTAwLDggKzEwMCwxMCBAQA0KIAkkKFNPVVJDRURJUikvdGVzdC9j aXBoZXIvVGVzdE9mS2hhemFkLmphdmEgXA0KIAkkKFNPVVJDRURJUikvdGVz dC9jaXBoZXIvVGVzdE9mTnVsbENpcGhlci5qYXZhIFwNCiAJJChTT1VSQ0VE SVIpL3Rlc3QvY2lwaGVyL1Rlc3RPZlJpam5kYWVsLmphdmEgXA0KKwkkKFNP VVJDRURJUikvdGVzdC9jaXBoZXIvVGVzdE9mU2VycGVudC5qYXZhIFwNCiAJ JChTT1VSQ0VESVIpL3Rlc3QvY2lwaGVyL1Rlc3RPZlNxdWFyZS5qYXZhIFwN CiAJJChTT1VSQ0VESVIpL3Rlc3QvY2lwaGVyL1Rlc3RPZlR3b2Zpc2guamF2 YSBcDQorCSQoU09VUkNFRElSKS90ZXN0L2NpcGhlci9OSVNUQ2lwaGVyVGVz dC5qYXZhIFwNCiAJXA0KIAkkKFNPVVJDRURJUikvdGVzdC9oYXNoL0FsbFRl c3RzLmphdmEgXA0KIAkkKFNPVVJDRURJUikvdGVzdC9oYXNoL1Rlc3RPZkhh c2hGYWN0b3J5LmphdmEgXA0KQEAgLTE0Miw5ICsxNDQsMTggQEANCiAJJChT T1VSQ0VESVIpL3Rlc3Qvc2lnL3JzYS9UZXN0T2ZSU0FDb2RlYy5qYXZhIFwN CiAJJChTT1VSQ0VESVIpL3Rlc3Qvc2lnL3JzYS9UZXN0T2ZSU0FLZXlHZW5l cmF0aW9uLmphdmEgXA0KIAkkKFNPVVJDRURJUikvdGVzdC9zaWcvcnNhL1Rl c3RPZlJTQVBTU1NpZ25hdHVyZS5qYXZhIFwNCisJXA0KKwl0di9yaWpuZGFl bC0xMjgvY2JjX2RfbS50eHQgdHYvcmlqbmRhZWwtMTI4L2NiY19lX20udHh0 IFwNCisJdHYvcmlqbmRhZWwtMTI4L2VjYl9kX20udHh0IHR2L3Jpam5kYWVs LTEyOC9lY2JfZV9tLnR4dCBcDQorCXR2L3Jpam5kYWVsLTEyOC9lY2Jfdmsu dHh0IHR2L3Jpam5kYWVsLTEyOC9lY2JfdnQudHh0IFwNCisJdHYvc2VycGVu dC0xMjgvY2JjX2RfbS50eHQgdHYvc2VycGVudC0xMjgvY2JjX2VfbS50eHQg XA0KKwl0di9zZXJwZW50LTEyOC9lY2JfZF9tLnR4dCB0di9zZXJwZW50LTEy OC9lY2JfZV9tLnR4dCBcDQorCXR2L3NlcnBlbnQtMTI4L2VjYl92ay50eHQg dHYvc2VycGVudC0xMjgvZWNiX3Z0LnR4dCBcDQorCXR2L3R3b2Zpc2gtMTI4 L2NiY19kX20udHh0IHR2L3R3b2Zpc2gtMTI4L2NiY19lX20udHh0IFwNCisJ dHYvdHdvZmlzaC0xMjgvZWNiX2RfbS50eHQgdHYvdHdvZmlzaC0xMjgvZWNi X2VfbS50eHQgXA0KKwl0di90d29maXNoLTEyOC9lY2JfdmsudHh0IHR2L3R3 b2Zpc2gtMTI4L2VjYl92dC50eHQNCiANCiBQS0dGSUxFUyA9DQotDQogDQog I2EgbWFuZ2xpbmcgb2YgdGhlIFNPVVJDRUZJTEVTIGxpc3QgYWJvdmUNCiAj VGhpcyBpcyBub3QgcXVpdGUgcGVyZmVjdCwgd2UndmUgaGFkIHRvIGhhcmRj b2RlIHRoZQ0KZGlmZiAtTmF1cncgY3J5cHRvL2J1aWxkLnhtbCBjcnlwdG8u MS9idWlsZC54bWwNCi0tLSBjcnlwdG8vYnVpbGQueG1sCUZyaSBKdW4gIDcg MjI6NTE6MTUgMjAwMg0KKysrIGNyeXB0by4xL2J1aWxkLnhtbAlTdW4gSnVu IDE2IDE5OjE2OjUwIDIwMDINCkBAIC0xMTUsNyArMTE1LDkgQEANCiAgICA8 L3RhcmdldD4NCiANCiAgICA8dGFyZ2V0IG5hbWU9Imphci10ZXN0IiBkZXBl bmRzPSJjb21waWxlLXRlc3QiPg0KLSAgICAgIDxqYXIgamFyZmlsZT0iJHt0 ZXN0Lmphcn0iIGJhc2VkaXI9IiR7Y2xhc3Nlcy5kaXJ9IiBpbmNsdWRlcz0i dGVzdC8qKiIvPg0KKyAgICAgIDxqYXIgamFyZmlsZT0iJHt0ZXN0Lmphcn0i IGJhc2VkaXI9IiR7Y2xhc3Nlcy5kaXJ9IiBpbmNsdWRlcz0idGVzdC8qKiI+ DQorICAgICAgICAgPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9IiBpbmNsdWRl cz0idHYvKioiLz4NCisgICAgICA8L2phcj4NCiAgICA8L3RhcmdldD4NCiAN CiAgICA8dGFyZ2V0IG5hbWU9ImNvbXBpbGUtdGVzdCIgZGVwZW5kcz0iamFy Ij4NCmRpZmYgLU5hdXJ3IGNyeXB0by9zb3VyY2UvdGVzdC9jaXBoZXIvQWxs VGVzdHMuamF2YSBjcnlwdG8uMS9zb3VyY2UvdGVzdC9jaXBoZXIvQWxsVGVz dHMuamF2YQ0KLS0tIGNyeXB0by9zb3VyY2UvdGVzdC9jaXBoZXIvQWxsVGVz dHMuamF2YQlTYXQgSnVuICA4IDE3OjA5OjA5IDIwMDINCisrKyBjcnlwdG8u MS9zb3VyY2UvdGVzdC9jaXBoZXIvQWxsVGVzdHMuamF2YQlTdW4gSnVuIDE2 IDE5OjAzOjQ2IDIwMDINCkBAIC03Myw2ICs3MywxMCBAQA0KICAgICAgIHJl c3VsdC5hZGRUZXN0KFRlc3RPZlNxdWFyZS5zdWl0ZSgpKTsNDQogICAgICAg cmVzdWx0LmFkZFRlc3QoVGVzdE9mVHdvZmlzaC5zdWl0ZSgpKTsNDQogDQ0K KyAgICAgIHJlc3VsdC5hZGRUZXN0KG5ldyBOSVNUQ2lwaGVyVGVzdCgicmlq bmRhZWwiLCAxNikpOw0KKyAgICAgIHJlc3VsdC5hZGRUZXN0KG5ldyBOSVNU Q2lwaGVyVGVzdCgic2VycGVudCIsIDE2KSk7DQorICAgICAgcmVzdWx0LmFk ZFRlc3QobmV3IE5JU1RDaXBoZXJUZXN0KCJ0d29maXNoIiwgMTYpKTsNCisN CiAgICAgICByZXR1cm4gcmVzdWx0Ow0NCiAgICB9DQ0KIA0NCmRpZmYgLU5h dXJ3IGNyeXB0by9zb3VyY2UvdGVzdC9jaXBoZXIvTklTVENpcGhlclRlc3Qu amF2YSBjcnlwdG8uMS9zb3VyY2UvdGVzdC9jaXBoZXIvTklTVENpcGhlclRl c3QuamF2YQ0KLS0tIGNyeXB0by9zb3VyY2UvdGVzdC9jaXBoZXIvTklTVENp cGhlclRlc3QuamF2YQlXZWQgRGVjIDMxIDE2OjAwOjAwIDE5NjkNCisrKyBj cnlwdG8uMS9zb3VyY2UvdGVzdC9jaXBoZXIvTklTVENpcGhlclRlc3QuamF2 YQlNb24gSnVuIDE3IDE1OjIyOjM5IDIwMDINCkBAIC0wLDAgKzEsMzEwIEBA DQorcGFja2FnZSB0ZXN0LmNpcGhlcjsNCisNCisvLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCisvLyAkSWQkDQorLy8NCisvLyBDb3B5cmln aHQgKEMpIDIwMDIgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4NCisvLw0KKy8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorLy8gaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cg0KKy8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQor Ly8NCisvLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKy8vDQorLy8gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UNCisvLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUNCisvLw0KKy8vICAgIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwNCisvLyAgICA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwNCisvLyAgICBCb3N0b24sIE1BICAwMjExMS0xMzA3 DQorLy8gICAgVVNBDQorLy8NCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u LCBpZiB5b3UgbGluayB0aGlzIGxpYnJhcnkgd2l0aCBvdGhlciBmaWxlcyB0 bw0KKy8vIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcyBsaWJyYXJ5IGRv ZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUNCisvLyByZXN1bHRpbmcgZXhl Y3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4NCisvLyBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZQ0KKy8v IGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZS4NCisvLw0KKy8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuSGFz aE1hcDsNCisNCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsNCitpbXBv cnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsNCitpbXBvcnQgamF2YS5p by5MaW5lTnVtYmVyUmVhZGVyOw0KKw0KK2ltcG9ydCBqYXZhLm5ldC5VUkw7 DQorDQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsNCisNCitp bXBvcnQgZ251LmNyeXB0by5jaXBoZXIuQ2lwaGVyRmFjdG9yeTsNCitpbXBv cnQgZ251LmNyeXB0by5jaXBoZXIuSUJsb2NrQ2lwaGVyOw0KK2ltcG9ydCBn bnUuY3J5cHRvLnV0aWwuVXRpbDsNCisNCisvKioNCisgKiA8cD5BIGdlbmVy aWMgY2lwaGVyIGNvbmZvcm1hbmNlIHRlc3QgYWdhaW5zdCBOSVNULXN0eWxl IHRlc3QgdmVjdG9ycy4gVG8NCisgKiBpbXBsZW1lbnQgYSB0ZXN0IGZvciBh IHBhcnRpY3VsYXIgY2lwaGVyLCBpbmNsdWRlIHRoZSBmaWxlcyBgZWNiX3Z0 LnR4dCcsDQorICogYGVjYl92ay50eHQnLCBgZWNiX2VfbS50eHQnLCBgZWNi X2RfbS50eHQnLCBgY2JjX2VfbS50eHQnLCBhbmQNCisgKiBgY2JjX2RfbS50 eHQnIGluIHRoZSBkaXJlY3RvcnkgYHR2L2NpcGhlcm5hbWUtYmxvY2tzaXpl Jy48L3A+DQorICoNCisgKiA8cD5UaGF0IGlzLCB0byB0ZXN0IFJpam5kYWVs IHdpdGggYSAxMjggYml0IGJsb2NrIHNpemUsIHB1dCB0aGUgYXBwcm9wcmlh dGUNCisgKiAoYW5kIGFwcHJvcHJpYXRlbHkgbmFtZWQpIGZpbGVzIGludG8g dGhlIGRpcmVjdG9yeSBgdHYvcmlqbmRhZWwtMTI4Jy4gVGhlbg0KKyAqIGNy ZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHdpdGggZS5nLjwvcD4N CisgKg0KKyAqIDxibG9ja3F1b3RlPjxjb2RlPnRlc3QgPSBuZXcgTklTVENp cGhlclRlc3QoInJpam5kYWVsIiwgMTYpOzwvY29kZT4NCisgKiA8L2Jsb2Nr cXVvdGU+DQorICoNCisgKiA8cD5BbmQgdXNlIDxjb2RlPnRlc3Q8L2NvZGU+ IGFzIHlvdXIgdGVzdCBjYXNlLjwvcD4NCisgKg0KKyAqIDxwPk5vdGUgdGhh dCBhIGZ1bGwtY29uZm9ybWFuY2UgdGVzdCB3aWxsIGxpa2VseSB0YWtlIGEg d2hpbGUgdG8gZmluaXNoDQorICogKGl0IHdvdWxkIGhhdmUgdG8gZG8gNDgs MDAxLDE1MiBlbmNyeXB0aW9ucyBvciBkZWNyeXB0aW9ucykuPC9wPg0KKyAq DQorICogPHA+UmVmZXJlbmNlczo8L3A+DQorICogPG9sPg0KKyAqICAgIDxs aT48YSBocmVmPSJodHRwOi8vY3NyYy5uaXN0Lmdvdi9lbmNyeXB0aW9uL2Fl cy9rYXRtY3Qva2F0bWN0Lmh0bSI+S25vd24NCisgKiAgICBBbnN3ZXIgVGVz dHMgYW5kIE1vbnRlIENhcmxvIFRlc3RzIGZvciBBRVMgU3VibWlzc2lvbnM8 L2E+IGZvciBhbg0KKyAqICAgIGV4cGxhbmF0aW9uIG9mIHRoZSB0ZXN0cyBh bmQgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0aW5nIGZpbGVzLjwvbGk+DQor ICogPC9vbD4NCisgKg0KKyAqIEB2ZXJzaW9uICRSZXZpc2lvbiQgDQorICov DQorcHVibGljIGNsYXNzIE5JU1RDaXBoZXJUZXN0IGV4dGVuZHMgVGVzdENh c2Ugew0KKw0KKyAgIC8vIENvbnN0YW50cyBhbmQgdmFyaWFibGVzDQorICAg Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorICAgLy8gZmls ZSBuYW1lcy4NCisgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBF Q0JfVksgPSAiZWNiX3ZrLnR4dCI7DQorICAgcHJvdGVjdGVkIHN0YXRpYyBm aW5hbCBTdHJpbmcgRUNCX1ZUID0gImVjYl92dC50eHQiOw0KKyAgIHByb3Rl Y3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEVDQl9FX00gPSAiZWNiX2VfbS50 eHQiOw0KKyAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEVDQl9E X00gPSAiZWNiX2RfbS50eHQiOw0KKyAgIHByb3RlY3RlZCBzdGF0aWMgZmlu YWwgU3RyaW5nIENCQ19FX00gPSAiY2JjX2VfbS50eHQiOw0KKyAgIHByb3Rl Y3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIENCQ19EX00gPSAiY2JjX2RfbS50 eHQiOw0KKw0KKyAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVOQ1JZ UFRJT04gPSAwOw0KKyAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IERF Q1JZUFRJT04gPSAxOw0KKw0KKyAgIHByb3RlY3RlZCBJQmxvY2tDaXBoZXIg Y2lwaGVyOw0KKyAgIHByb3RlY3RlZCBIYXNoTWFwIGF0dHJpYjsNCisgICBw cm90ZWN0ZWQgVVJMIGVjYl92azsNCisgICBwcm90ZWN0ZWQgVVJMIGVjYl92 dDsNCisgICBwcm90ZWN0ZWQgVVJMIGVjYl9lX207DQorICAgcHJvdGVjdGVk IFVSTCBlY2JfZF9tOw0KKyAgIHByb3RlY3RlZCBVUkwgY2JjX2VfbTsNCisg ICBwcm90ZWN0ZWQgVVJMIGNiY19kX207DQorDQorICAgLy8gQ29uc3RydWN0 b3JzDQorICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQor ICAgcHVibGljIE5JU1RDaXBoZXJUZXN0KFN0cmluZyBhbGdvcml0aG0sIGlu dCBibG9ja1NpemUpIHsNCisgICAgICBzdXBlcihhbGdvcml0aG0pOw0KKyAg ICAgIGNpcGhlciA9IENpcGhlckZhY3RvcnkuZ2V0SW5zdGFuY2UoYWxnb3Jp dGhtKTsNCisgICAgICBhdHRyaWIgPSBuZXcgSGFzaE1hcCgpOw0KKyAgICAg IGF0dHJpYi5wdXQoY2lwaGVyLkNJUEhFUl9CTE9DS19TSVpFLCBuZXcgSW50 ZWdlcihibG9ja1NpemUpKTsNCisgICAgICBhdHRyaWIucHV0KGNpcGhlci5L RVlfTUFURVJJQUwsIG5ldyBieXRlW2NpcGhlci5kZWZhdWx0S2V5U2l6ZSgp XSk7DQorICAgICAgdHJ5IHsNCisgICAgICAgICBjaXBoZXIuaW5pdChhdHRy aWIpOw0KKyAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0NCisgICB9 DQorDQorICAgLy8gSW5zdGFuY2UgbWV0aG9kcy4NCisgICAvLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisgICBwdWJsaWMgdm9pZCBzZXRV cCgpIHsNCisgICAgICBTdHJpbmcgcHJlZml4ID0gIi90di8iICsgY2lwaGVy Lm5hbWUoKS50b0xvd2VyQ2FzZSgpICsgIi8iOw0KKyAgICAgIGVjYl92ayA9 IE5JU1RDaXBoZXJUZXN0LmNsYXNzLmdldFJlc291cmNlKHByZWZpeCArIEVD Ql9WSyk7DQorICAgICAgZWNiX3Z0ID0gTklTVENpcGhlclRlc3QuY2xhc3Mu Z2V0UmVzb3VyY2UocHJlZml4ICsgRUNCX1ZUKTsNCisgICAgICBlY2JfZV9t ID0gTklTVENpcGhlclRlc3QuY2xhc3MuZ2V0UmVzb3VyY2UocHJlZml4ICsg RUNCX0VfTSk7DQorICAgICAgZWNiX2RfbSA9IE5JU1RDaXBoZXJUZXN0LmNs YXNzLmdldFJlc291cmNlKHByZWZpeCArIEVDQl9EX00pOw0KKyAgICAgIGNi Y19lX20gPSBOSVNUQ2lwaGVyVGVzdC5jbGFzcy5nZXRSZXNvdXJjZShwcmVm aXggKyBDQkNfRV9NKTsNCisgICAgICBjYmNfZF9tID0gTklTVENpcGhlclRl c3QuY2xhc3MuZ2V0UmVzb3VyY2UocHJlZml4ICsgQ0JDX0RfTSk7DQorICAg fQ0KKw0KKyAgIHB1YmxpYyB2b2lkIHJ1blRlc3QoKSB7DQorICAgICAgU3Ry aW5nIHMgPSAiQ29uZm9ybWFuY2UoIiArIGNpcGhlci5uYW1lKCkgKyAiKTog IjsNCisgICAgICB0cnkgew0KKyAgICAgICAgIGlmIChlY2JfdmsgIT0gbnVs bCkgew0KKyAgICAgICAgICAgIFZhclRlc3QoZWNiX3ZrLm9wZW5TdHJlYW0o KSk7DQorICAgICAgICAgfQ0KKyAgICAgICAgIGlmIChlY2JfdnQgIT0gbnVs bCkgew0KKyAgICAgICAgICAgIFZhclRlc3QoZWNiX3Z0Lm9wZW5TdHJlYW0o KSk7DQorICAgICAgICAgfQ0KKyAgICAgICAgIGlmIChlY2JfZV9tICE9IG51 bGwpIHsNCisgICAgICAgICAgICBNQ1Rlc3RFQ0IoZWNiX2VfbS5vcGVuU3Ry ZWFtKCksIEVOQ1JZUFRJT04pOw0KKyAgICAgICAgIH0NCisgICAgICAgICBp ZiAoZWNiX2RfbSAhPSBudWxsKSB7DQorICAgICAgICAgICAgTUNUZXN0RUNC KGVjYl9kX20ub3BlblN0cmVhbSgpLCBERUNSWVBUSU9OKTsNCisgICAgICAg ICB9DQorICAgICAgICAgaWYgKGNiY19lX20gIT0gbnVsbCkgew0KKyAgICAg ICAgICAgIE1DVGVzdENCQyhjYmNfZV9tLm9wZW5TdHJlYW0oKSwgRU5DUllQ VElPTik7DQorICAgICAgICAgfQ0KKyAgICAgICAgIGlmIChjYmNfZF9tICE9 IG51bGwpIHsNCisgICAgICAgICAgICBNQ1Rlc3RDQkMoY2JjX2RfbS5vcGVu U3RyZWFtKCksIERFQ1JZUFRJT04pOw0KKyAgICAgICAgIH0NCisgICAgICB9 IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgIGZhaWwocyArIGUu Z2V0TWVzc2FnZSgpKTsNCisgICAgICB9DQorICAgfQ0KKw0KKyAgIC8vIE93 biBtZXRob2RzLg0KKyAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKw0KKyAgIC8qKiBWYXJpYWJsZS1rZXkgYW5kIHZhcmlhYmxlLXRleHQg dGVzdC4gKi8NCisgICBwcm90ZWN0ZWQgdm9pZCBWYXJUZXN0KElucHV0U3Ry ZWFtIHR2SW4pIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgIExpbmVOdW1i ZXJSZWFkZXIgaW4gPSBuZXcgTGluZU51bWJlclJlYWRlcihuZXcgSW5wdXRT dHJlYW1SZWFkZXIodHZJbikpOw0KKyAgICAgIFN0cmluZyBsaW5lOw0KKyAg ICAgIGJ5dGVbXSBrZXkgPSBuZXcgYnl0ZVtjaXBoZXIuZGVmYXVsdEtleVNp emUoKV07DQorICAgICAgYnl0ZVtdIHB0ID0gbmV3IGJ5dGVbY2lwaGVyLmN1 cnJlbnRCbG9ja1NpemUoKV07DQorICAgICAgYnl0ZVtdIGN0ID0gbmV3IGJ5 dGVbY2lwaGVyLmN1cnJlbnRCbG9ja1NpemUoKV07DQorICAgICAgYnl0ZVtd IGVjdCA9IG5ldyBieXRlW2NpcGhlci5jdXJyZW50QmxvY2tTaXplKCldOw0K KyAgICAgIHdoaWxlICgobGluZSA9IGluLnJlYWRMaW5lKCkpICE9IG51bGwp IHsNCisgICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJLRVlTSVpFPSIp KSB7DQorICAgICAgICAgICAgaW50IGtzID0gSW50ZWdlci5wYXJzZUludChs aW5lLnN1YnN0cmluZyhsaW5lLmluZGV4T2YoJz0nKSsxKSk7DQorICAgICAg ICAgICAga2V5ID0gbmV3IGJ5dGVba3MgLyA4XTsNCisgICAgICAgICB9IGVs c2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgiUFQ9IikpIHsNCisgICAgICAgICAg ICBzdHJpbmdUb0J5dGVzKHB0LCBsaW5lLnN1YnN0cmluZyhsaW5lLmluZGV4 T2YoJz0nKSsxKSk7DQorICAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0 c1dpdGgoIktFWT0iKSkgew0KKyAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMo a2V5LCBsaW5lLnN1YnN0cmluZyhsaW5lLmluZGV4T2YoJz0nKSsxKSk7DQor ICAgICAgICAgICAgYXR0cmliLnB1dChjaXBoZXIuS0VZX01BVEVSSUFMLCBr ZXkpOw0KKyAgICAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKCJD VD0iKSkgew0KKyAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMoZWN0LCBsaW5l LnN1YnN0cmluZyhsaW5lLmluZGV4T2YoJz0nKSsxKSk7DQorICAgICAgICAg ICAgY2lwaGVyLnJlc2V0KCk7DQorICAgICAgICAgICAgY2lwaGVyLmluaXQo YXR0cmliKTsNCisgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKHB0 LCAwLCBjdCwgMCk7DQorICAgICAgICAgICAgYXNzZXJ0VHJ1ZShVdGlsLmFy ZUVxdWFsKGN0LCBlY3QpKTsNCisgICAgICAgICB9DQorCSAvLyBPdGhlciBs aW5lcyBhcmUgaWdub3JlZC4NCisgICAgICB9DQorICAgICAgaW4uY2xvc2Uo KTsNCisgICB9DQorDQorICAgLyoqIEVsZWN0cm9uaWMgY29kZWJvb2sgbW9k ZSBtb250ZSBjYXJsbyB0ZXN0LiAqLw0KKyAgIHByb3RlY3RlZCB2b2lkIE1D VGVzdEVDQihJbnB1dFN0cmVhbSB0dkluLCBpbnQgbW9kZSkgdGhyb3dzIEV4 Y2VwdGlvbiB7DQorICAgICAgTGluZU51bWJlclJlYWRlciBpbiA9IG5ldyBM aW5lTnVtYmVyUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcih0dkluKSk7 DQorICAgICAgU3RyaW5nIGxpbmU7DQorICAgICAgYnl0ZVtdIGtleSA9IG5l dyBieXRlW2NpcGhlci5kZWZhdWx0S2V5U2l6ZSgpXTsNCisgICAgICBieXRl W10gcHQgPSBuZXcgYnl0ZVtjaXBoZXIuY3VycmVudEJsb2NrU2l6ZSgpXTsN CisgICAgICBieXRlW10gY3QgPSBuZXcgYnl0ZVtjaXBoZXIuY3VycmVudEJs b2NrU2l6ZSgpXTsNCisgICAgICBieXRlW10gZXQgPSBuZXcgYnl0ZVtjaXBo ZXIuY3VycmVudEJsb2NrU2l6ZSgpXTsNCisgICAgICB3aGlsZSAoKGxpbmUg PSBpbi5yZWFkTGluZSgpKSAhPSBudWxsKSB7DQorICAgICAgICAgaWYgKGxp bmUuc3RhcnRzV2l0aCgiS0VZU0laRT0iKSkgew0KKyAgICAgICAgICAgIGlu dCBrcyA9IEludGVnZXIucGFyc2VJbnQobGluZS5zdWJzdHJpbmcobGluZS5p bmRleE9mKCc9JykrMSkpOw0KKyAgICAgICAgICAgIGtleSA9IG5ldyBieXRl W2tzIC8gOF07DQorICAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dp dGgoIlBUPSIpKSB7DQorICAgICAgICAgICAgaWYgKG1vZGUgPT0gREVDUllQ VElPTikgew0KKyAgICAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMoZXQsIGxp bmUuc3Vic3RyaW5nKGxpbmUuaW5kZXhPZignPScpKzEpKTsNCisgICAgICAg ICAgICAgICBjaXBoZXIucmVzZXQoKTsNCisgICAgICAgICAgICAgICBjaXBo ZXIuaW5pdChhdHRyaWIpOw0KKyAgICAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgMTAwMDA7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgIGNp cGhlci5kZWNyeXB0QmxvY2soY3QsIDAsIHB0LCAwKTsNCisgICAgICAgICAg ICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHB0LCAwLCBjdCwgMCwgcHQubGVu Z3RoKTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgYXNz ZXJ0VHJ1ZShVdGlsLmFyZUVxdWFsKHB0LCBldCkpOw0KKyAgICAgICAgICAg IH0gZWxzZSB7DQorICAgICAgICAgICAgICAgc3RyaW5nVG9CeXRlcyhwdCwg bGluZS5zdWJzdHJpbmcobGluZS5pbmRleE9mKCc9JykrMSkpOw0KKyAgICAg ICAgICAgIH0NCisgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0 aCgiS0VZPSIpKSB7DQorICAgICAgICAgICAgc3RyaW5nVG9CeXRlcyhrZXks IGxpbmUuc3Vic3RyaW5nKGxpbmUuaW5kZXhPZignPScpKzEpKTsNCisgICAg ICAgICAgICBhdHRyaWIucHV0KGNpcGhlci5LRVlfTUFURVJJQUwsIGtleSk7 DQorICAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoIkNUPSIp KSB7DQorICAgICAgICAgICAgaWYgKG1vZGUgPT0gRU5DUllQVElPTikgew0K KyAgICAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMoZXQsIGxpbmUuc3Vic3Ry aW5nKGxpbmUuaW5kZXhPZignPScpKzEpKTsNCisgICAgICAgICAgICAgICBj aXBoZXIucmVzZXQoKTsNCisgICAgICAgICAgICAgICBjaXBoZXIuaW5pdChh dHRyaWIpOw0KKyAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg MTAwMDA7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgIGNpcGhlci5lbmNy eXB0QmxvY2socHQsIDAsIGN0LCAwKTsNCisgICAgICAgICAgICAgICAgICBT eXN0ZW0uYXJyYXljb3B5KGN0LCAwLCBwdCwgMCwgY3QubGVuZ3RoKTsNCisg ICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgYXNzZXJ0VHJ1ZShV dGlsLmFyZUVxdWFsKGN0LCBldCkpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7 DQorICAgICAgICAgICAgICAgc3RyaW5nVG9CeXRlcyhjdCwgbGluZS5zdWJz dHJpbmcobGluZS5pbmRleE9mKCc9JykrMSkpOw0KKyAgICAgICAgICAgIH0N CisgICAgICAgICB9DQorCSAvLyBPdGhlciBsaW5lcyBhcmUgaWdub3JlZC4N CisgICAgICB9DQorICAgICAgaW4uY2xvc2UoKTsNCisgICB9DQorDQorICAg LyoqIENpcGhlciBibG9jayBjaGFpbmluZyBtb2RlIG1vbnRlIGNhcmxvIHRl c3QuICovDQorICAgcHJvdGVjdGVkIHZvaWQgTUNUZXN0Q0JDKElucHV0U3Ry ZWFtIHR2SW4sIGludCBtb2RlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAg ICBMaW5lTnVtYmVyUmVhZGVyIGluID0gbmV3IExpbmVOdW1iZXJSZWFkZXIo bmV3IElucHV0U3RyZWFtUmVhZGVyKHR2SW4pKTsNCisgICAgICBTdHJpbmcg bGluZTsNCisgICAgICBieXRlW10ga2V5ID0gbmV3IGJ5dGVbY2lwaGVyLmRl ZmF1bHRLZXlTaXplKCldOw0KKyAgICAgIGJ5dGVbXSBwdCA9IG5ldyBieXRl W2NpcGhlci5jdXJyZW50QmxvY2tTaXplKCldOw0KKyAgICAgIGJ5dGVbXSBj dCA9IG5ldyBieXRlW2NpcGhlci5jdXJyZW50QmxvY2tTaXplKCldOw0KKyAg ICAgIGJ5dGVbXSBldCA9IG5ldyBieXRlW2NpcGhlci5jdXJyZW50QmxvY2tT aXplKCldOw0KKyAgICAgIGJ5dGVbXSBsYXN0ID0gbmV3IGJ5dGVbY2lwaGVy LmN1cnJlbnRCbG9ja1NpemUoKV07DQorICAgICAgYnl0ZVtdIGl2ID0gbmV3 IGJ5dGVbY2lwaGVyLmN1cnJlbnRCbG9ja1NpemUoKV07DQorICAgICAgd2hp bGUgKChsaW5lID0gaW4ucmVhZExpbmUoKSkgIT0gbnVsbCkgew0KKyAgICAg ICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoIktFWVNJWkU9IikpIHsNCisgICAg ICAgICAgICBpbnQga3MgPSBJbnRlZ2VyLnBhcnNlSW50KGxpbmUuc3Vic3Ry aW5nKGxpbmUuaW5kZXhPZignPScpKzEpKTsNCisgICAgICAgICAgICBrZXkg PSBuZXcgYnl0ZVtrcyAvIDhdOw0KKyAgICAgICAgICAgIGlmIChtb2RlID09 IEVOQ1JZUFRJT04pIHsNCisgICAgICAgICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IGN0Lmxlbmd0aDsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAg Y3RbaV0gPSAwOw0KKyAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9 IGVsc2Ugew0KKyAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg cHQubGVuZ3RoOyBpKyspIHsNCisgICAgICAgICAgICAgICAgICBwdFtpXSA9 IDA7DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAg ICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgiUFQ9IikpIHsNCisg ICAgICAgICAgICBpZiAobW9kZSA9PSBERUNSWVBUSU9OKSB7DQorICAgICAg ICAgICAgICAgc3RyaW5nVG9CeXRlcyhldCwgbGluZS5zdWJzdHJpbmcobGlu ZS5pbmRleE9mKCc9JykrMSkpOw0KKyAgICAgICAgICAgICAgIGNpcGhlci5y ZXNldCgpOw0KKyAgICAgICAgICAgICAgIGNpcGhlci5pbml0KGF0dHJpYik7 DQorICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDsg aSsrKSB7DQorICAgICAgICAgICAgICAgICAgY2lwaGVyLmRlY3J5cHRCbG9j ayhjdCwgMCwgcHQsIDApOw0KKyAgICAgICAgICAgICAgICAgIGZvciAoaW50 IGogPSAwOyBqIDwgcHQubGVuZ3RoOyBqKyspIHsNCisgICAgICAgICAgICAg ICAgICAgICBwdFtqXSBePSBpdltqXTsNCisgICAgICAgICAgICAgICAgICB9 DQorICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShjdCwgMCwg aXYsIDAsIGN0Lmxlbmd0aCk7DQorICAgICAgICAgICAgICAgICAgU3lzdGVt LmFycmF5Y29weShwdCwgMCwgY3QsIDAsIHB0Lmxlbmd0aCk7DQorICAgICAg ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgIGFzc2VydFRydWUoVXRpbC5h cmVFcXVhbChwdCwgZXQpKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAg ICAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMocHQsIGxpbmUuc3Vic3RyaW5n KGxpbmUuaW5kZXhPZignPScpKzEpKTsNCisgICAgICAgICAgICB9DQorICAg ICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoIktFWT0iKSkgew0K KyAgICAgICAgICAgIHN0cmluZ1RvQnl0ZXMoa2V5LCBsaW5lLnN1YnN0cmlu ZyhsaW5lLmluZGV4T2YoJz0nKSsxKSk7DQorICAgICAgICAgICAgYXR0cmli LnB1dChjaXBoZXIuS0VZX01BVEVSSUFMLCBrZXkpOw0KKyAgICAgICAgIH0g ZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKCJDVD0iKSkgew0KKyAgICAgICAg ICAgIGlmIChtb2RlID09IEVOQ1JZUFRJT04pIHsNCisgICAgICAgICAgICAg ICBzdHJpbmdUb0J5dGVzKGV0LCBsaW5lLnN1YnN0cmluZyhsaW5lLmluZGV4 T2YoJz0nKSsxKSk7DQorICAgICAgICAgICAgICAgY2lwaGVyLnJlc2V0KCk7 DQorICAgICAgICAgICAgICAgY2lwaGVyLmluaXQoYXR0cmliKTsNCisgICAg ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsN CisgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHB0Lmxl bmd0aDsgaisrKSB7DQorICAgICAgICAgICAgICAgICAgICAgcHRbal0gXj0g aXZbal07DQorICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAg ICAgIFN5c3RlbS5hcnJheWNvcHkoY3QsIDAsIGxhc3QsIDAsIGN0Lmxlbmd0 aCk7DQorICAgICAgICAgICAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayhw dCwgMCwgY3QsIDApOw0KKyAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJh eWNvcHkoY3QsIDAsIGl2LCAwLCBjdC5sZW5ndGgpOw0KKyAgICAgICAgICAg ICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGFzdCwgMCwgcHQsIDAsIGxhc3Qu bGVuZ3RoKTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAg YXNzZXJ0VHJ1ZShVdGlsLmFyZUVxdWFsKGN0LCBldCkpOw0KKyAgICAgICAg ICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgc3RyaW5nVG9CeXRlcyhj dCwgbGluZS5zdWJzdHJpbmcobGluZS5pbmRleE9mKCc9JykrMSkpOw0KKyAg ICAgICAgICAgIH0NCisgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRz V2l0aCgiSVY9IikpIHsNCisgICAgICAgICAgICBzdHJpbmdUb0J5dGVzKGl2 LCBsaW5lLnN1YnN0cmluZyhsaW5lLmluZGV4T2YoJz0nKSsxKSk7DQorICAg ICAgICAgfQ0KKwkgLy8gT3RoZXIgbGluZXMgYXJlIGlnbm9yZWQuDQorICAg ICAgfQ0KKyAgICAgIGluLmNsb3NlKCk7DQorICAgfQ0KKw0KKwwgLy8gQ2xh c3MgbWV0aG9kcy4NCisgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKw0KKyAgIC8qKiBDb252ZXJ0IGEgaGV4YWRlY2ltYWwgc3RyaW5nIHRv IGEgYnl0ZSBhcnJheS4gKi8NCisgICBwcm90ZWN0ZWQgc3RhdGljIHZvaWQg c3RyaW5nVG9CeXRlcyhieXRlW10gYnVmLCBTdHJpbmcgc3RyKSB7DQorICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidWYubGVuZ3RoICYmIGkgKiAyIDwg c3RyLmxlbmd0aCgpOyBpKyspIHsNCisgICAgICAgICBidWZbaV0gPSAoYnl0 ZSkgSW50ZWdlci5wYXJzZUludChzdHIuc3Vic3RyaW5nKGkqMiwgaSoyKzIp LCAxNik7DQorICAgICAgfQ0KKyAgIH0NCit9DQo= --1439763957-861381847-1024354888=:28747-- From raif@fl.net.au Tue Jun 18 06:39:41 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17KGOi-0003oR-00 for ; Tue, 18 Jun 2002 06:39:40 -0400 Received: from fl.net.au (a3-p26.syd.fl.net.au [202.181.1.90]) by delenn.fl.net.au (Postfix) with ESMTP id 967C6180088; Tue, 18 Jun 2002 20:44:08 +1000 (EST) Message-ID: <3D0F0DF7.8030204@fl.net.au> Date: Tue, 18 Jun 2002 20:39:51 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nic Ferrier Cc: Olivier LF , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] DOS characters in shell scripts. References: <20020615074621.GA8468@zipworld.com.au> <3D0BF713.7000500@fl.net.au> <87znxvjvkr.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Nic, Nic Ferrier wrote: > "Raif S. Naffah" writes: > > >>yes you're right; i just checked them with (gVIM + Cream) --which i >>should have done instead of using that "intelligent" expensive IDE (you >>know what i'm talking about!). > > > A suggestion: use emacs on Windows, it does all the line ending > conversion for you. i'll pass on this one. the features that the IDE i use has, far outweigh the few problems that it causes. vim is enough to help me show/fix line-ending problems if/when they appear. cheers; rsn From raif@fl.net.au Tue Jun 18 06:53:07 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17KGbj-0005fz-00 for ; Tue, 18 Jun 2002 06:53:07 -0400 Received: from fl.net.au (a3-p26.syd.fl.net.au [202.181.1.90]) by delenn.fl.net.au (Postfix) with ESMTP id 1973617FC83; Tue, 18 Jun 2002 20:57:33 +1000 (EST) Message-ID: <3D0F111D.70906@fl.net.au> Date: Tue, 18 Jun 2002 20:53:17 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] PATCH: NIST cipher tester References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, thanks for your contribution :-) it's a nice addition to the test suite of this library. may i rename the "NISTCipherTest" to "TestOfNISTVectors" ? it looks nicer with the other classes + i think conveys better what it is supposed to do. ...and yes, you guessed right; it is UMac32! i'll generate (the test vectors) and test the new class before i check in the lot with all the corrections/amendements. cheers; rsn Casey Marshall wrote: > Hello, > > I've put together a (fairly simple) cipher testing program that will read > in the standard test vector files that the NIST AES submissions required; > all that is involved in testing an algorithm foo with a 128 bit block size > is putting all the test vectors in a directory `tv/foo-128', then > instantiating the class test.cipher.NISTCipherTest. The class loads test > files with the `getResource' method of java.lang.Class, so the vector > files can simply be put into gnu-crypto-test.jar. > > The patch only adds the class itself, and updates the build scripts and > test.cipher.AllTests. I didn't include the test files for the three AES > submitted ciphers in Classpathx, because they're probably far too big for > this mailing list. > > I've also noted that in the file `Makefile.in' there is a line that says > `gnu/crypto/mac/UMash32.java' which I'm guessing should have read > `gnu/crypto/mac/UMac32.java'. > > Cheers, > > ... From raif@fl.net.au Sun Jun 23 02:07:47 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17M0XJ-0008Sa-00 for ; Sun, 23 Jun 2002 02:07:47 -0400 Received: from fl.net.au (a5-p42.syd.fl.net.au [202.181.2.42]) by delenn.fl.net.au (Postfix) with ESMTP id 201E417FDED for ; Sun, 23 Jun 2002 16:12:18 +1000 (EST) Message-ID: <3D1565BD.3070006@fl.net.au> Date: Sun, 23 Jun 2002 16:07:57 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] latest check-ins Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello there, yesterday, i checked-in the following: * latest contributions from Casey, * modified versions of NistKat and NistMCT to generate the test vectors in separate files which makes using them, from Casey's TestOfNistVectors, straightforward. * modified the build.xml to output the NIST test vectors in a subdirectory "nist" under tv/ and the NESSIE tests under the sub-directory "nessie" under tv/. * corrections to the Makefile.in (in root directory), * amendements to the same as well the both Makefile.am and Makefile.in (in gcj) and the Makefile.in (in gcj/source) to (a) include the new source(s) and (b) to invoke the NistKat and NistMCT tools with the new options. * updated Casey's contributions in AUTHORS. i think the modifications in the gcj related makefiles are incomplete. can somebody with a working gcj test this please. i'll talk about the testing side of the library in a separate message. cheers; rsn From raif@fl.net.au Sun Jun 23 03:59:06 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17M1qo-00053K-00 for ; Sun, 23 Jun 2002 03:31:59 -0400 Received: from fl.net.au (a5-p42.syd.fl.net.au [202.181.2.42]) by delenn.fl.net.au (Postfix) with ESMTP id D261B17FC19 for ; Sun, 23 Jun 2002 17:36:36 +1000 (EST) Message-ID: <3D15797F.4020203@fl.net.au> Date: Sun, 23 Jun 2002 17:32:15 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] on testing (long) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello there, test.cipher.TestOfSerpent is a model for testing a cipher's correctness, and i would like us to think on how we can use this pattern for testing all our symmetric key block ciphers. things to consider: * we should also test for the cloneability of our ciphers. this can be as as easy as: a. initialise a cipher instance, b. encrypt one block, c. clone the cipher, d. encrypt a second block with both the cipher and its clone, e. verify that the result from both is the same. f. repeat the exercise with decryption. * the TestOfSerpent uses test vector values that are hard-coded in the class. should we (a) continue doing that, (b) use something similar to TestOfNistVectors where the test vector values are read from files in a pre-designated location, or (c) combine both approaches? having hard-coded values that must be processed correctly for the test to pass, works around the fact that TestOfNistVectors does not fail if it cannot locate the files it is expecting. besides, having hard-coded values inside the test-case, allows application of the (more or less) same pattern to non-NIST ciphers. i'd go with (c). * if we go with (b) or (c), how many hard-coded test vectors should we use? --all of them is out of the question because of size and speed. theoretically one value should be enough, but 3 is more "re-assuring." * should there be any special criteria for selecting the agreed number of test-vectors? or throwing a dice would suffice? * once we have coded those TestOfxxx for our ciphers. should we still keep the selfTest() method in the API and implementations? in its actual form the setlfTest() for the ciphers only test for symmetry, which may be true even for incorrectly implemented ciphers. in other words it's almost useless! we should change it to either (a) something similar to the selfTest() of hash algorithms, (b) something similar to the TestOfxxx discussed above with some hard-coded test vectors, or (c) get rid of it altogether! * if we get rid of the selfTest() method in the API, how can we guarrantee that noone/nothing would replace our "tested" implementations with their (probably) insecure/leaking ones? would a signed jar be enough? * the test vectors generated by, at least, the NistKat and NistMCT tools should be included in the distribution, since they are used by the TestOfNistVectors, which (a) if amended to be more rigourous, and (b) passes all its tests for the test vector files, would constitute a comprehensive "bill-of-health" for the correctness of a cipher's implementation. relying on the NistKat and NistMCT tools to generate them in-situ is not a valid option IMO. a conscientious user would download these test vectors from a different source (NIST itself, the home page of the algorithm designers, or a trustworthy site/distribution), and only then run the TestOfNistVectors over them. so am i contradicting myself? no. am i putting more stringent conditions on what to distribute and how to distribute it? may be. let me explain. + the NistKat and NistMCT tools are used only for (a) generating test vectors for new cipher implementation, and (b) for bootstraping the process. + once the test vector files are generated, they are "certified" (by a process which i still dont know how). the end result would be a signed-jar for each of the NIST-compatible algorithms; eg. aes-tv.jar for the AES test vectors. + the gnu-crypto.jar is signed. + the TestOfNistVectors, or similar class, would use the cipher implementation from the gnu-crypto signed jar with the test vectors from the cipher's test vectors signed jar to assert the correctness of that cipher. does it make sense? * whatever we come with from the discussion of the previous point, a third jar, grouping the test vectors, and separate from the gnu-crypto.jar and gnu-crypto-test.jar should be considered. comments and suggestions are welcome + cheers; rsn From mstatic@metastatic.org Mon Jun 24 03:35:45 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17MOO0-00019K-00 for ; Mon, 24 Jun 2002 03:35:45 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id DD8475280F; Mon, 24 Jun 2002 00:35:42 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g5O7Zg906393; Mon, 24 Jun 2002 00:35:42 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Mon, 24 Jun 2002 00:35:42 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) In-Reply-To: <3D15797F.4020203@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Sun, 23 Jun 2002, Raif S. Naffah wrote: > > [...] > > i'd go with (c). > > * if we go with (b) or (c), how many hard-coded test vectors should we > use? --all of them is out of the question because of size and speed. > theoretically one value should be enough, but 3 is more "re-assuring." > > * should there be any special criteria for selecting the agreed number > of test-vectors? or throwing a dice would suffice? > I would go with (c), too. As far as the number of test cases to hard-code, I would recommend *at least* two of each of the monte-carlo tests, so there is at least one change of key. This is because if a test only does the first monte-carlo test, a problem with endianess *could* sneak by, since the all-zero key looks the same regardless of endianness (this did happen early on when I was working on the Serpent implementation, when I only checked the all-zero key). For the known-answer tests I would recommend using texts/keys where a bit is set somewhere in each byte/nybble/word, to try to cover a range, not just the first few. Other than that I would simply use a Comfortable Round Number. > * once we have coded those TestOfxxx for our ciphers. should we still > keep the selfTest() method in the API and implementations? > > in its actual form the setlfTest() for the ciphers only test for > symmetry, which may be true even for incorrectly implemented ciphers. > in other words it's almost useless! > > we should change it to either (a) something similar to the selfTest() of > hash algorithms, (b) something similar to the TestOfxxx discussed above > with some hard-coded test vectors, or (c) get rid of it altogether! > I would go for encrypting a known text, comparing the ciphertext with a known answer, then decrypting it to see if it results in the plaintext. -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Mon Jun 24 06:53:28 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17MREs-0002Y8-00 for ; Mon, 24 Jun 2002 06:38:30 -0400 Received: from fl.net.au (a4-p15.syd.fl.net.au [202.181.2.79]) by delenn.fl.net.au (Postfix) with ESMTP id C137E17FD10; Mon, 24 Jun 2002 20:43:10 +1000 (EST) Message-ID: <3D16F6B8.8060203@fl.net.au> Date: Mon, 24 Jun 2002 20:38:48 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.9 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Casey Marshall wrote: > On Sun, 23 Jun 2002, Raif S. Naffah wrote: > > >>[...] >> >>i'd go with (c). >> >>* if we go with (b) or (c), how many hard-coded test vectors should we >>use? --all of them is out of the question because of size and speed. >>theoretically one value should be enough, but 3 is more "re-assuring." >> >>* should there be any special criteria for selecting the agreed number >>of test-vectors? or throwing a dice would suffice? >> > > > I would go with (c), too. As far as the number of test cases to hard-code, > I would recommend *at least* two of each of the monte-carlo tests, so there > is at least one change of key. This is because if a test only does the > first monte-carlo test, a problem with endianess *could* sneak by, since > the all-zero key looks the same regardless of endianness (this did happen > early on when I was working on the Serpent implementation, when I only > checked the all-zero key). good point! > For the known-answer tests I would recommend using texts/keys where a bit > is set somewhere in each byte/nybble/word, to try to cover a range, not > just the first few. > > Other than that I would simply use a Comfortable Round Number. let's say 5 values for each test, which makes a total of 30 --including the KAT ones. the position of the bits for the latter, should be selected at random. >>* once we have coded those TestOfxxx for our ciphers. should we still >>keep the selfTest() method in the API and implementations? >> >>in its actual form the setlfTest() for the ciphers only test for >>symmetry, which may be true even for incorrectly implemented ciphers. >>in other words it's almost useless! >> >>we should change it to either (a) something similar to the selfTest() of >>hash algorithms, (b) something similar to the TestOfxxx discussed above >>with some hard-coded test vectors, or (c) get rid of it altogether! >> > > I would go for encrypting a known text, comparing the ciphertext with a > known answer, then decrypting it to see if it results in the plaintext. so a symmetry test but with known values. yup; sounds good. how do you want to split the work? cheers; rsn From mstatic@metastatic.org Tue Jun 25 03:53:13 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17Ml8T-0002W6-00 for ; Tue, 25 Jun 2002 03:53:13 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id 59D435289F; Tue, 25 Jun 2002 00:53:12 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g5P7rBX23714; Tue, 25 Jun 2002 00:53:12 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Tue, 25 Jun 2002 00:53:07 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) In-Reply-To: <3D16F6B8.8060203@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Mon, 24 Jun 2002, Raif S. Naffah wrote: > > For the known-answer tests I would recommend using texts/keys where a bit > > is set somewhere in each byte/nybble/word, to try to cover a range, not > > just the first few. > > > > Other than that I would simply use a Comfortable Round Number. > > let's say 5 values for each test, which makes a total of 30 --including > the KAT ones. the position of the bits for the latter, should be > selected at random. > I think for the KA tests the number of tests should depend on the length of the key/text, by (say) using the word 0x80000000 at all the possible word (dynner, 32 bit) aligned offsets, e.g. 8000000000000000000000000000000000000000 0000000080000000000000000000000000000000 ...etc. just because it is seems less arbitrary and spans the space of keys/texts. > [...] > > how do you want to split the work? > I could do the TestOfXxxx classes, maybe make a general superclass that does the work, and subclasses that simply fill in the test vectors. -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Tue Jun 25 05:04:56 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17MmFr-000800-00 for ; Tue, 25 Jun 2002 05:04:55 -0400 Received: from fl.net.au (a5-p51.syd.fl.net.au [202.181.2.51]) by delenn.fl.net.au (Postfix) with ESMTP id 2E50B17FC08; Tue, 25 Jun 2002 19:08:03 +1000 (EST) Message-ID: <3D1831EC.3090302@fl.net.au> Date: Tue, 25 Jun 2002 19:03:40 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Casey Marshall wrote: > On Mon, 24 Jun 2002, Raif S. Naffah wrote: > > >>>For the known-answer tests I would recommend using texts/keys where a bit >>>is set somewhere in each byte/nybble/word, to try to cover a range, not >>>just the first few. >>> >>>Other than that I would simply use a Comfortable Round Number. >> >>let's say 5 values for each test, which makes a total of 30 --including >>the KAT ones. the position of the bits for the latter, should be >>selected at random. >> > > > I think for the KA tests the number of tests should depend on the length of > the key/text, by (say) using the word 0x80000000 at all the possible word > (dynner, 32 bit) aligned offsets, e.g. > > 8000000000000000000000000000000000000000 > 0000000080000000000000000000000000000000 > ...etc. > > just because it is seems less arbitrary and spans the space of keys/texts. i'm not sure. if the cipher is not correctly implemented, it's highly unlikely to pass some KATs and fails others. even if this is the case, a cipher implementation should be deemed correct iff it passes *all* the tests! >>[...] >> >>how do you want to split the work? >> > > > I could do the TestOfXxxx classes, maybe make a general superclass that > does the work, and subclasses that simply fill in the test vectors. excellent; a base test-case for the TestOfxxx ciphers would be great! i'll do the selfTest() implementations. ps. checkout the latest TestOfSerpent and Util before you start. cheers; rsn From mstatic@metastatic.org Thu Jun 27 07:13:37 2002 Received: from ludo.dreamhost.com ([66.33.197.214]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17NXDU-0000Yh-00 for ; Thu, 27 Jun 2002 07:13:36 -0400 Received: from gradius.dreamhost.com (gradius.dreamhost.com [66.33.197.13]) by ludo.dreamhost.com (Postfix) with ESMTP id D7FB35283D for ; Thu, 27 Jun 2002 04:13:33 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g5RBDXs16593 for ; Thu, 27 Jun 2002 04:13:33 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Thu, 27 Jun 2002 04:13:33 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) [plus patch] In-Reply-To: <3D1831EC.3090302@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; boundary="1439763957-1681508471-1025176231=:11003" Content-ID: Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: 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. --1439763957-1681508471-1025176231=:11003 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-ID: Patch for the test classes is attached. It consists of a base test class and the five TestOf* classes modified to make use of it. On Tue, 25 Jun 2002, Raif S. Naffah wrote: > Casey Marshall wrote: > > > > I think for the KA tests the number of tests should depend on the length of > > the key/text, by (say) using the word 0x80000000 at all the possible word > > (dynner, 32 bit) aligned offsets, e.g. > > > > 8000000000000000000000000000000000000000 > > 0000000080000000000000000000000000000000 > > ...etc. > > > > just because it is seems less arbitrary and spans the space of keys/texts. > > i'm not sure. if the cipher is not correctly implemented, it's highly > unlikely to pass some KATs and fails others. > > even if this is the case, a cipher implementation should be deemed > correct iff it passes *all* the tests! > Absolutely. I decided to just use sequential texts (shift one bit to the right each time) instead of random/arbitrary ones. It is simpler to program and to produce tests, and the monte carlo tests exercise the algorithms enough that errors are unlikely to sneak by. Cheers + goodnight, -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ --1439763957-1681508471-1025176231=:11003 Content-Type: APPLICATION/OCTET-STREAM; name="patch-tests.gz" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: TestOf* patch Content-Disposition: attachment; filename="patch-tests.gz" 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 KcQhvXoZy7B9n7+QZbBQZqp0ErMcElXr6gnfGnJLBgJCsozBcwOj5y+e2kif XLIVmyXOX6bJoHw/NUfZ2vA57hwugwSoJPnI4lJiOkzqShXYMG9VUlYvBzsd ceFHIn1hbvDy5UsiL6iZGy54Ny0BtnW9M9JGx8vsltz2XvKm4WoLaY746j0o /S9cS3PCF7eS/PoCnWbXYk1t03ZiPSK3Gbt7Eo+H/AV0beCsZV0LYZ5j1tyH J3ae5hX9U0RCiXdsIRHa75KnOwfkabe6PCfdqb20JFFYoA7qLDJ53FT5MEzG ZYXQuwzHs/jtsBPXOdwWDP1aGCxfQZSvVkW5cGZDRZTUt6sBYMYRrlqQIxYo dufljWzsNBD0m5mzVbwVc0XbLnNFNxbMVeU7WHT5KpN1Ju3fyaT9jRUjKMUq 1w1Neh/mG5v0Hsy/m0njMaYJWTphu2Ewn8I04ZxPvFY9YFxj58br9A2t3Wiz SnNk2afRurESeDN3eJjeN/WXB+n97+1QrZn/WoeqvYPb2KFqbe6h1Frrxpru TR3qIXrf3KEeoPfv5lDlY5VTNoEj0SjEHHRytjWMYo9A7opRrM3945S1bqzP vyNGbbX3O2PUNnv/u7vUPVHqTi5Va3P/SK2r9T4otdXe74xS2+z9L3SpfUKr fWTV/kexU6u+p7G+V6vayfuQu8Zqj9yzeMo2FrI5PnNPjOqQ71WeTWu7Zedb 7fhOycu4tiem5efzTXPiCYPYkHvjUTCU9fXJYJNTRsSOWDqZnSb5+pNGblCv OW3kBv0P/VnMTxwhGjsqRDcOJIudxSGvPXFkCavaqSPqgW4f6PLi1BG5a8ns 2BFFttmxI3vLjh35tyd7+LflvfaC47OjwQG5IXL3ksg9hY93X1b2JY3ISqmD LEyGsN+UPOMMBJcbR5bIa04sqbXd0pklgtn2Di0R/LZ5aong2Dy2ZIUevuHg EsFwKyeXCFZbO7pEsGucXVJTwTZPLxEc7318SU0qsu4AkznZqhNM5kRLjzCZ 331/Qmtdb/MUE8Hx248xEXy2eI6JYLjFg0wEwzvJ9CDwin8rDjM5XH2bn3Wy moQ71w0a9qxtlnCC49lkMk8ftx6LInD/cBVJ4+SUpYSLo1PKZPX8OX6irnDT Cd+Wzx6mF/PN/vxMBd5v66iUHm8lmt7cmH/A09IzfpuFSFlriH359Sy2ZG++ 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 LQd2+SD0lmsZ3tXnbFv1lgsKcPV53OI5Plm95SrpG+3yiekt6b7llo6TK82a VDSrZjuI6L/maowJRWv5bDxVLX+TRa8qS7BcNYc8rAWZQtqF5pQvoosIcga3 okzpJargK22QYOwgcONmmSm4HqmVpIxc27aUs/ExkmLqPV6O0DPuGEtWJhc3 rJvb0ILJVKnWbtiwnFGyM8ql0vC3RhskZ7tLinShlFv2HY9rbSxyi2q41ipS lJRME4UYjFXxGDBi59T52vqBVir1wlaRPAVPjxuLa9k1baq3WuWbRT7bF8tU 6zaRqAAouiRCNMx5JktRs/XZ2q6mOW/V+KqCcjpnxaOcIznFGkeE3kXoN815 TcXgkrZqKzLNrWvAWwYKbyNbjLbRsayMTG6VVXGudRIFDl26WnSUelaJWHft /TUliYLlmguc4EKyXouBZhbdIzxdu2LdtgWlbQOtja1R3hOxtVlP1qPgdcEc ikQAkz0N1BV27LrJiYr3o0XxWE3BfVPSJiN85IxQo+fslBLxmLa8ZonnEiEf cnfF2brXLr0WP62OhevNtEP/wofQtO2j6wL4EIz60XXCexituz66bnAPw6wf XUe0A5r1VjqM/zh9+dOL5ydnuyoxVo7fSYuxcsa+aozhYmP/K+0eYv+rlUEf FRlHRcZRkXFUZBwVGfsA7AeiyLhC/t9ek3F150OrMhbXPeoyBosclRl3U2Ys 2NHHqs1YOMhRnbHyOqozjuqMozpjG7k9qjOO6ox7V2cseOyN+ox5iC0o4l4C jWtE80FINDaQvZ1FGktc4CjT2MQAP3Ghxv03xlKtVmurLcHo5l1w3udKOWmn KbcybIguquCfrwkHBZuke0IiFaPrqXpjxuZEXWWXo84lyk7XzCV52cfdMvWu rrX9yLqZ3nujpLVTiiv1ZqRZUvad4rD8zikpZ4rVvrMrOXPMwRhlOlnrqW9o fLS9MVZtRL4W6QCV2Hh2ikxVphTddMYNRxGAY80OQwjRdq7VpKTZGnIcrCrD Jl5VWg/OWm1ZG7auWq0MBs6q+9DGRmHSDMhXy9Ul72020h4kKZNi1pliu96q oGqVdVK5pOydroFUihxVwtPY9e0EdmiM1axPoZasORuFq+uWS0+UkjHZRz/0 evAq+mKc8rIx2Uj/G+uISmoulsZqbMbDteMRCU6ktPMpSiuhwjoy2JCpQzOO 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 nlo3eyL/+Wlyb72SdvBpn928kja7cSVtq27sxvPna22zbWtts8Uh19fa5m76 9a6KsZsFY1Ncff75JPj65vyP/R9nZ/JF0BtUY//3b9Py8MZBvZ2uM0jKvvny /I+f3bQgOD95sR44m31+gwDNzqZVwbWrhZPCf50s7eoW11VpaxcXx8OX1hZn 69VkE5aPK46z2YGXoWbTJVdWHOdDHRcc5+lo64Lj1el4e0pKS8+3vN64eLzV Rcj38IC30aJNozroiuX194clyHeHz7Zc7sqcgoLBP9XamdmTEJ5qEB8BwsvX DcueV/noatVzmJ9x1fNqiq6vhr7fWVorhVtRwu0ihHuzQLXFsbcUwG3Rv91e /ra44KX47bPfX1n+L8s7Wufbi9YZ5NvnF3/5dtka00Lss9mrq8Xgq4XZr4cD zi+GA57O/jb+aXHOq+//qp7hzUfyzuOZ+l9Si/dOgWGneO/dX8YJefF65Ve8 /v37lye4mzzbYlq++PH5q5NvT3599Or7aV/S16unXB0138z26Pzi6UzJmKf/ cKV1Jy1P79xS04aplYMuX5KpvgCVaf/9j+dnj+Sy018uXmc88pv+8+sfL6dv voP3r6fPHj8eb3f65MnyX97O/ucH0fc8evPD6d8v8FyPZ7/7HWz1zXz9+4uz k5/+6+KHlausWnIy/fKkGPds9c3N8/JRGp7N/oZncwfDW/NJGx6V9N6GxzWu GX5XIH33KLMns51xdB1YfncQsBwP2Ayd5xcfB3R+dwhHurgjdJ5fvHOki03Q eR0pJZE+R7Hxz5OfX79ZOvKmOZmtgYKPbxbuhKPDLKzH0euweZyFDbNwN1Bd nYUdQfVkE6h+twFUT3YG1T8VYbit5PkmfkTnbwyxE4w+nb3ciKLy0cKjS3+a 7LYiD5mb72sx++MDeNh0s5eXN3uJm2n57g/8uObqd/VHvP7865uLkx+/kH0P v8regkfzM+bnXz/n7WaXXjuDezv4ipHX+vloqVffL+Zig7VAu14+m/3nH2Af /HDDE769bSxsssFYtO0RF2y2xsUyvd8/LuYHnK0eQYcJnAX631PgnP59OvgP M8Zr3QGzzUFyNv+f1gTW2w8jRMWZDhmiGwjBOCd/uzhYiK65+tlul38CJ5c7 nL1/FJib+XAogHy9FQWWa833hQIHyp/v6McHDANro/fDwIHJnQ6IA5so6SeO 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 USP+QxSIsSDzTUhpvZnxosJBr87Rpu3FruE9hESjDoTqd8Mq/FIrXCHOEtac tH1cuV2xMnzAbZW3KsTAvOCV8Dm1BkrPzo40KTGmXUf3SmIkKoVxHNOl++J1 DgmcVxfWJvBYgZOWFLZoAEKV3CKQYsms07RMO5WtRe3vcCpPXpbaHHhmlUgC cZaY2rejNL5CYdgsnoyrYSGSicSodNDodhOppWuVpIascuVV7YGLxjX0oNqv nLdM5mA7XkO0Y5AMjMTjmnptl0VNybumP6+qWlU66aC8kjlZEKNTTg1D2TTA JskgsGJL0mwcfX7WwEJoec/zvJu/qoPkUbKhitYepAgDhoB/RFzAxNtZv4q9 SSIT+CvoFFHaGHyukYr2/N42wSPIpp3wGml7zhkMq6ELlijtt7qR0IK6htcu rSapdzs3LepBCqHtC3lVeCUpl6y21nlSFAFjd/ytpZteJCkozUNRjftWU6aL qstcSO3F7OeGQF3rIhIxdPkkALTw06vq1zWbZ6sI0v6h0TjjrFsqQ2lCBdFt TGPd9cERwbSfZ33QnGzCCgmrGB11LQDLrW4kFDUGab6Lz0UFC1LilRIHMGHd bVNFZfKJpVMrXvRSHjZlTqRKYkvezr5qXDTlR+rYSccbGeCpClNenTSf7gGZ E0AfAoFdtXZj+pIcVK8jL9va6dhQQ3KSSsOV0lYNwBSg1NSvXS2/BilsPbIJ nLi63IfAD6BMb3YbB6E+mQogIj2AFjTPeZWiSVGfPs+/KyDXIKIkMRO8nxWa jZWY0UIgqNqo2o6/F80VnDQfXgeWWqA8Nm7UOLtTPrazqjdVm9Q0e3jUGauJ 2RkJMW9DoWaDuSlRqEu0EzznqPHOkklU2+i93elEj/UiHplJ+mksRfcYGCFa xVVbKxSBlLcoIRkgL/E1Q80lHkh+hnDtZkwBWTXUnqQKo1TNX5Dm1Cj4g8Hc dErTZEczO2+yJWme2rkO9WMDlrpH7jjqHAyvQyVImn0LPPW2NXLH7G7jvrSj EACmJDy1Ams/mZQJywIykvnuL1cqOZibjyEUnWUDKOZJOrhCq+m2+0AmFoqs 2kpV1b2UIFXORSwjRO22lmc30jpoQPhP5/ddUaxDjmLYhPaC0XCvonGvcZag JXGQtOYqgJzwuIt3JALBzJ6qkEd0OoAAjWl6vWY3DjP2SZvcKeskmHSt9y5F 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 tmrKbQY6i2oUwMSyqMlkV4WEbUKQJVmcNVetgUPnNKv9M0D7lk01wqlAOms+ nXr8MdJc1Gmnc/TJzOVTj3r61x+tz3p/+tk/TW9ePi0v//LJ6xc/f/Xizcul /VwNwD9fnn3yYXv58w/471/13/7PN9PL9t7/mP443T77nv1Gn/7Rz372s29z 9f/2wZv2dG7L01N4MuEXMf3ClCd8yP7opz/96bf76v/2wYdvnv7PN8+fXNal jP1FiLqU+9Hf/M3Tz+y71vinn/KvGp/+5m9+9LNPpuWj6fdtdD+/t13zl//H j37G/37+86effY//bFf8q/fXXzx97p7f/eOTfc+NB/65dT834cm62yK8nJ71 p8ufP3n6q3GB7SqnF5/85eWz33/4+umd00/Gjz1dX7b29NsX/fWfuOjT9cWb 5yvR8sXzd5/ef768d/ezH3z47BUh9cXvX05/eOI/u37w1e0Hf/n0lxdvnpbp +dPLtj57RYyd3xB5n71+mp6vP3/x8ukPLzCfv/AH28X4FnWOf6j1e/mHV08v +vjN3/7T757+tj1vLwnUv34zf0zU/odnS3v+qj1NfLn+5NWHbX2a/zI+rnvf rvcFD/DLp/aMD718+mN7+YrfP7m33/L2ktzWO9Nr3fnLpxef6Gd+wu3+Zbvi x2SOT3/2q9bhs8ddn549H1/w4YtPeLAPuTYL8KdnH3/8NLenN69af/Pxu098 8um/v//B3/3qdx9sFzz80z8//ffDb35z+KcP/vmXfPz1hy/4SPtj2y727A+f fPyMa/N4L6fnr/+ip/jHy29Of8fnD8f3/+H9D/6ZJ9kudX3/g3+6/Pa3T9df /ebp8PTrw28+eP/0u384/Obp17/7za9/9dvLe09Pv23t65a6v73cH16womt7 PT37+NX9Evwz7/oVd/nx+vTh9MfGO1/asz9yj3g7FvZN3ubHL57/fjzrdsXX d4v6y6dXt3vszz5uT6df/fqf3/+nv+XW3+9Pz1+8fvfpTy+fYVuvX+gzd3fF P19mzMOW3/30Y7HiSixre/r1x9PSnn729Ns3uqT35rMPHV+8ei03+MfDk3HW 2p9px/rTv/3dbw93X314xaO/+qQtz3jU9uelfbK5EC4ov/j42fOPtkf8+Nn8 cnr5l/HkTy+GeeohX+lpePz1zXIzaDyp/bktb15LdOHd/Q+vL/gBVkJu8Oz1 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 cGDB/YU1OdqDy4fT2fAnOZzj2R4uD9biD9eQ4sFcj9zRqZiC+R5w67NL58h3 7T+tYTgnTNXJdYzJZ0/cOV9O+aBewuPxK5fl662lXC+lnm08XogRx9Mhe0LB IRFzz6Eejo/v/8SbD/lqU7qezukUT+WUsopHyiW588P7P6arP55dPTkezZyJ E4oypxiO9VxyflhyzQ720RKG3fFwUlXaucZjSOfTMadyeoj62R6IPYd0LAk7 xMeOhrh/MQei5JF3sVuWp7t8PkAj//w1SL59uh3+s4/aXz6vyH1L9QMbPn3B htzfv92SfPtlY5fo7jbvt1pun/7x00/f5keBNH76p08/1ubg/ePd/3P7uS1v vnv72bGr81lS/YLNmHtM+HTbi3nYeWn3V/hGq/TFwuVft0wffKtl+uA7LtP2 c1s6/c9ZpvZxW16/fPFcFOLF2uYXLz7Sfg7A8QXY6mfL9PLjF0+3bTp99zdY u388XbbPX07Hb7qCu5/51uu4++ldMv4vvKhr+3aLem7fflHvfuY7LOrdT+9S +X/Oot4I4azjkqflQ/iXmOT3Zaun4+lb26p+5rvbqn56BwX+Sy/rd7TWb7Ws dz/z3a31fln/g6z1W5XIffCnF/3Zqw+/aY3c/ce/UZHc/Q/8W6vk9tfal8m5 X3h3XyZXrKrknK3/yVVy9/f8Q5ncD2VyP5TJ/VAm90OZ3L8lvv5vUiZ3C/z/ 8XVyty/+vgvl3l72h0q5/YL8UCr33Url3gKj/6/Wyr01j/8diuV+qBP6oU7o hzqhH+qEfqgT+qFO6PMI9isLhW4e9hYd/psKhR4h5n+JSqEvhnlvN92+tlTo MxjwWBPz/99aoQfo97gwPxQL/QcXC6Xj9ew1qfVgT96ZdArHa4mXo7Uu2Gt5 KI65av53yIeLtNpDrCWcTzWf4/WgCp3rw6eTtflqa86neDieawr8R4ohnKvk q0N4LGA4JBfM4XDxMZ8v5/O11uqTVPttceWxWMg43fqVX46nfInmFNIpeh2Y Z3ty4YuLhT66SZd8+Xoc4+FythqZYo0J12CdPaZ0yedjubrr9aFyoUrMwlwB rjHGg3endLLOX1I6XQvP8LAe7nw8XC6XUyrufDrVmE/uHO1Rcwgv/Njh4fj/ cDmZg7dXaRScEzd1LKUcargmb2I5PRYL2YPeRfaXXGLWJ9IlFesO5mquhy8p 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 JPGvP/p/Aa7jnGvxJAIA --1439763957-1681508471-1025176231=:11003-- From raif@fl.net.au Fri Jun 28 08:23:18 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17NumU-0002Uk-00 for ; Fri, 28 Jun 2002 08:23:18 -0400 Received: from fl.net.au (a4-p21.syd.fl.net.au [202.181.2.85]) by delenn.fl.net.au (Postfix) with ESMTP id 18F2B180002; Fri, 28 Jun 2002 22:28:07 +1000 (EST) Message-ID: <3D1C554E.8080105@fl.net.au> Date: Fri, 28 Jun 2002 22:23:42 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) [plus patch] References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Casey Marshall wrote: > Patch for the test classes is attached. It consists of a base test class > and the five TestOf* classes modified to make use of it. > > On Tue, 25 Jun 2002, Raif S. Naffah wrote: > > >>Casey Marshall wrote: >> >>>I think for the KA tests the number of tests should depend on the length of >>>the key/text, by (say) using the word 0x80000000 at all the possible word >>>(dynner, 32 bit) aligned offsets, e.g. >>> >>> 8000000000000000000000000000000000000000 >>> 0000000080000000000000000000000000000000 >>> ...etc. >>> >>>just because it is seems less arbitrary and spans the space of keys/texts. >> >>i'm not sure. if the cipher is not correctly implemented, it's highly >>unlikely to pass some KATs and fails others. >> >>even if this is the case, a cipher implementation should be deemed >>correct iff it passes *all* the tests! >> > > > Absolutely. I decided to just use sequential texts (shift one bit to the > right each time) instead of random/arbitrary ones. It is simpler to program > and to produce tests, and the monte carlo tests exercise the algorithms > enough that errors are unlikely to sneak by. i havent had a chance to look at your code yet --was busy getting my cvs client working again-- but i'll checkin this stuff along with mine during the weekend. the log entries will be shorter than usual since i wont be using wincvs for some time; unless someone can point out how to get vim configured to be the editor for use with the cvs cmd-line client tool. > > Cheers + goodnight, > goodnight + have a nice weekend; rsn From raif@fl.net.au Fri Jun 28 08:39:10 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17Nv1p-0004V5-00 for ; Fri, 28 Jun 2002 08:39:09 -0400 Received: from fl.net.au (a4-p21.syd.fl.net.au [202.181.2.85]) by delenn.fl.net.au (Postfix) with ESMTP id 0C91817FF80 for ; Fri, 28 Jun 2002 22:44:00 +1000 (EST) Message-ID: <3D1C5906.5030100@fl.net.au> Date: Fri, 28 Jun 2002 22:39:34 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) [plus patch] References: <3D1C554E.8080105@fl.net.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Raif S. Naffah wrote: > > ... > > the log entries will be shorter than usual since i wont be using wincvs > for some time; unless someone can point out how to get vim configured to > be the editor for use with the cvs cmd-line client tool. found it! cheers; rsn From nferrier@tapsellferrier.co.uk Fri Jun 28 08:43:02 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17Nv5Z-0005ls-00 for ; Fri, 28 Jun 2002 08:43:01 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17NvBa-0002Bd-00; Fri, 28 Jun 2002 13:49:14 +0100 To: "Raif S. Naffah" Cc: Casey Marshall , "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) [plus patch] References: <3D1C554E.8080105@fl.net.au> From: Nic Ferrier Date: 28 Jun 2002 13:46:50 +0100 In-Reply-To: <3D1C554E.8080105@fl.net.au> Message-ID: <871yark1tx.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 18 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > the log entries will be shorter than usual since i wont be using wincvs > for some time; unless someone can point out how to get vim configured to > be the editor for use with the cvs cmd-line client tool. the env var: EDITOR needs to be set to the path of your editor (in this case, vim). On windoze machines you sometimes have trouble with CVS not finding the pserver password file but that shouldn't matter if you're using ssh. What else is there? Nic From raif@fl.net.au Fri Jun 28 08:48:06 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17NvAT-0006Bm-00 for ; Fri, 28 Jun 2002 08:48:06 -0400 Received: from fl.net.au (a4-p21.syd.fl.net.au [202.181.2.85]) by delenn.fl.net.au (Postfix) with ESMTP id F236E17FE0C; Fri, 28 Jun 2002 22:52:55 +1000 (EST) Message-ID: <3D1C5B1E.7090706@fl.net.au> Date: Fri, 28 Jun 2002 22:48:30 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nic Ferrier Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing (long) [plus patch] References: <3D1C554E.8080105@fl.net.au> <871yark1tx.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Nic Ferrier wrote: > "Raif S. Naffah" writes: > > >>the log entries will be shorter than usual since i wont be using wincvs >>for some time; unless someone can point out how to get vim configured to >>be the editor for use with the cvs cmd-line client tool. > > > the env var: EDITOR needs to be set to the path of your editor (in > this case, vim). yes. i shouldve done man cvs! > On windoze machines you sometimes have trouble with CVS not finding > the pserver password file but that shouldn't matter if you're using > ssh. > > > What else is there? world peace? ;-) thanks buddy + cheers; rsn From raif@fl.net.au Sat Jun 29 10:21:15 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17OJ6A-0001Ln-00 for ; Sat, 29 Jun 2002 10:21:15 -0400 Received: from fl.net.au (a5-p11.syd.fl.net.au [202.181.2.11]) by delenn.fl.net.au (Postfix) with ESMTP id 3B9D317FBE1 for ; Sun, 30 Jun 2002 00:26:04 +1000 (EST) Message-ID: <3D1DC271.4060605@fl.net.au> Date: Sun, 30 Jun 2002 00:21:37 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" References: <3D15797F.4020203@fl.net.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] on testing - today and tomorrow Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: A. where we're at ------------------- earlier i wrote: > ... > test.cipher.TestOfSerpent is a model for testing a cipher's correctness... today's checkin concludes that part which leaves the library in the following state: * hash and cipher algorithms have a selfTest() method which is guarranteed to be called by the respective Factories when asked to provide a specific implementation. * the selfTest() method when invoked for the first time, compares the result of processing a designated input against a knwon pre-computed output value. when the two values agree, a "validity" flag is set to true. * the cached value of the validity flag is re-used in recurrent invocations of the selfTest() methods. * all the TestOfxxx cipher test-cases now follow a similar pattern which consists of: a. test the validity; b. test the cloneability; c. run 5 tests each of KAT VK, VT, MCT ECB Encryption and Decryption for one block size and each key-size in the set formed by the intersection of (i) the cipher's supported key sizes and (ii) the set of the following 3 values: 128, 192 and 256. * in addition, the top-level test harness, runs a general verification test if previously generated test vectors are found in a pre-deisngated location (tv/nist/...). this test assumes the input test vector files follow a naming and have a specific format described by NIST --and hence may have been generated by 3rd parties using other tools than this library. * the NIST tools, have been changed to allow generation of similar test vector files. B. where do we go from here ----------------------------- 1. review the hash TestOfxxx and see if a similar pattern can be applied and/or is it worth it. 2. include in the build process the generation, in a separate jar, of the (at least) the NIST test vectors. 3. ensure that all the build tools (ant, top-level make, and preferably automakejar, as well as gcj/make): a. run the same tests, b. build the same deliverables. ant's build.xml should be the reference. once this list is done then we're ready for the first public release. C. what's next for the near future ------------------------------------ 1. do we go for the signed test-vector jars? 2. do we (PGP) sign our distribution? 3. can we get the library integrated with the gcj release --from Olivier's tests it sounded like our JCE adapters fill a missing niche in their distribution? D. what's next for the medium-term future ------------------------------------------- 1. start the adapters for the javax.security SPIs. 2. what to do with ASN.1 related stuff? 3. work out a process for selecting new algorithms to implement. comments, suggestions, volunteers are more than welcome ;-) cheers; rsn From nferrier@tapsellferrier.co.uk Sat Jun 29 17:44:19 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17OQ0w-00079i-00 for ; Sat, 29 Jun 2002 17:44:19 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17OQ77-0002zP-00; Sat, 29 Jun 2002 22:50:41 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing - today and tomorrow References: <3D15797F.4020203@fl.net.au> <3D1DC271.4060605@fl.net.au> From: Nic Ferrier Date: 29 Jun 2002 22:50:30 +0100 In-Reply-To: <3D1DC271.4060605@fl.net.au> Message-ID: <87n0tdiwk9.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 16 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > comments, suggestions, volunteers are more than welcome ;-) Well done. Excellent work. I hope soon to have some more time to sort out the automakejar issues. I have a Windoze pc at work so I'll install cygwin on it and see if I can get it all working. I would help with the GCJ issues but my GCJ is broken right now /8-< Nic From raif@fl.net.au Sat Jun 29 23:54:29 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17OVnA-0005uu-00 for ; Sat, 29 Jun 2002 23:54:28 -0400 Received: from fl.net.au (a3-p17.syd.fl.net.au [202.181.1.81]) by delenn.fl.net.au (Postfix) with ESMTP id 6853F17FD0E; Sun, 30 Jun 2002 13:59:20 +1000 (EST) Message-ID: <3D1E810D.4030306@fl.net.au> Date: Sun, 30 Jun 2002 13:54:53 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nic Ferrier Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing - today and tomorrow References: <3D15797F.4020203@fl.net.au> <3D1DC271.4060605@fl.net.au> <87n0tdiwk9.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Nic Ferrier wrote: > "Raif S. Naffah" writes: > > >>comments, suggestions, volunteers are more than welcome ;-) > > > Well done. Excellent work. thanks. > I hope soon to have some more time to sort out the automakejar > issues. I have a Windoze pc at work so I'll install cygwin on it and > see if I can get it all working. > > > I would help with the GCJ issues but my GCJ is broken right now /8-< is there a particular person you'd recommend to talk to about integrating gnu.crypto with the GNU java classes (java.security.* packages)? cheers; rsn From nferrier@tapsellferrier.co.uk Sun Jun 30 04:11:18 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17OZnh-0002Af-00 for ; Sun, 30 Jun 2002 04:11:17 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17OZtw-0005LN-00; Sun, 30 Jun 2002 09:17:44 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing - today and tomorrow References: <3D15797F.4020203@fl.net.au> <3D1DC271.4060605@fl.net.au> <87n0tdiwk9.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> <3D1E810D.4030306@fl.net.au> From: Nic Ferrier Date: 30 Jun 2002 09:17:40 +0100 In-Reply-To: <3D1E810D.4030306@fl.net.au> Message-ID: <87k7ohi3iz.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 13 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > > I would help with the GCJ issues but my GCJ is broken right now /8-< > > is there a particular person you'd recommend to talk to about > integrating gnu.crypto with the GNU java classes (java.security.* packages)? You should just pitch on the Classpath list. Do you guys have a JCA/JCE implementation? Nic From raif@fl.net.au Mon Jul 01 04:52:13 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17Owur-0002XV-00 for ; Mon, 01 Jul 2002 04:52:13 -0400 Received: from fl.net.au (a5-p06.syd.fl.net.au [202.181.2.6]) by delenn.fl.net.au (Postfix) with ESMTP id D176417FAF6; Mon, 1 Jul 2002 18:55:09 +1000 (EST) Message-ID: <3D201850.6020101@fl.net.au> Date: Mon, 01 Jul 2002 18:52:32 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nic Ferrier Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] on testing - today and tomorrow References: <3D15797F.4020203@fl.net.au> <3D1DC271.4060605@fl.net.au> <87n0tdiwk9.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> <3D1E810D.4030306@fl.net.au> <87k7ohi3iz.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Nic Ferrier wrote: > "Raif S. Naffah" writes: > > >>>I would help with the GCJ issues but my GCJ is broken right now /8-< >> >>is there a particular person you'd recommend to talk to about >>integrating gnu.crypto with the GNU java classes (java.security.* packages)? > > > You should just pitch on the Classpath list. ok. > Do you guys have a JCA/JCE implementation? no we dont; but we have implementations of MD5, SHA, DSA implementatios and adapters to hook them into a standard JDK --or compliant in the sense of what GNU classpath is developing; i.e. the java.* packages. code is also available for including ASN.1 DER classes for x.509 certificates and the like. we also plan on providing adapters for use by JCE/JCA implementations from Sun (jdk1.4) or cleanroom ones (bouncycastle, cryptix, etc...) for pre jdk1.4 --the javax.security.* packages. cheers; rsn From olivier@zipworld.com.au Mon Jul 01 09:37:21 2002 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17P1Ml-0006hR-00 for ; Mon, 01 Jul 2002 09:37:20 -0400 Received: from tournesol.malabar.au (ppp39.dyn10.pacific.net.au [61.8.10.39]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id XAA27939 for ; Mon, 1 Jul 2002 23:37:12 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17P1MU-0005yU-00 for ; Mon, 01 Jul 2002 23:37:02 +1000 Date: Mon, 1 Jul 2002 23:37:02 +1000 To: classpathx-crypto Message-ID: <20020701133702.GA22896@zipworld.com.au> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="2oS5YaxWCcQjTEyO" Content-Disposition: inline User-Agent: Mutt/1.3.28i From: Olivier LF Subject: [Classpathx-crypto] GCJ JUnit result. Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: --2oS5YaxWCcQjTEyO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline > 3. can we get the library integrated with the gcj release --from > Olivier's tests it sounded like our JCE adapters fill a missing niche in > their distribution? Sorry for the delay! I am stuck with another home project for the moment and don't seem to get anything going! Anyway, this is the output I get from the JUnit test suite under GCJ version: gcc (GCC) 3.2 20020518. From this result, it looks very broken but I don't think it is. All the basic tests from the crypto.tools directory are running just fine. I think that gnu-crypto is essentially working with GCJ. The JUnit test suite is more likely to be badly broken because of missing security classes in GCJ than compilation problems or compiler/runtime bugs. Oli This is only a snippets of the output, I attach the full file as well. ......................................... .................................>>> dss: SEED: d38e1e61cc37f5ffcabfe5da132298286e085b19 >>> dss: counter: 2 >>> dss: q: de09f1902cf484f232fee5d27262372d1c6072d7 >>> dss: p: be6189c7df2a7cdf657a81faa2c809f5c5c9ce4d47ed4021fdb8fd55afc140e6ebc8b1df5defadeb422b9f4964eb6d2958940ee84ed8032ce50ac5b611841f87 >>> dss: g: 6444111a41ad5e86dccb6fbb63a0bc6a1b85b7af338a269a14056cbd8afb9458ba1c6016b14f5331ec6400f2ebd83f0f17cdd54a510050648dd8f5aa3d35ffc .>>> dss: SEED: bd86a3974bc22bd3f08c342361075249ef516797 >>> dss: counter: 56 >>> dss: q: 96460a696d1e361b4840d641c696955314b5d061 >>> dss: p: e4e862371e938d890bb7838bb2d50dd079a384406f28e1d1a719f4d886f7e08b9d4c76fc15976f6793fffe98c9356c93b64eae43551561a0a8446f2c80e66cff >>> dss: g: c1d24777284832cf120427c854866ff270c349aa091834161fea360801f76ed432d7f615732fdaf6df2a4d274a86db58061e48ff1ec39e88385333d9638ed69 F.>>> dss: SEED: d78931c08e94cf508a9121d194823300dcfe900f >>> dss: counter: 417 >>> dss: q: aeefc632ffed90b4103202b8b3c9311eb23009e7 >>> dss: p: 9cab4e49c636313f8bd548aa2bbf79b5049ceedcdd7f130d41b9ab8533f81ca93366fbe619bc0a63a338b49925c44752ea4c35b8840164889cdb21fc54ceeead >>> dss: g: 2a651864ab3b9a2f0a05bb24a1ad72578abecc8160391a9964b6d42a126ae0dd1deb678063e2ddc190d80afbe10ba64225c605735207b16358ab640f88424974 F.>>> dss: SEED: b411c7108639999a028fd5766ba8482a130fbfcb >>> dss: counter: 181 >>> dss: q: bb593e212739720fb3a98fa06818448ce03e5965 >>> dss: p: 886b602f67146f295cf4357e249d70750c86381cb5e2bc8eb195d654bb8869e5595172e967c9d9efd621d2806ad391b15583f01903ded7dc8d84491c68f6ffeb >>> dss: g: 3642955454bc0d9c9b20f6420bd7cfcd9fe6ceeb43212c083eb42cf16d8a44fddd8ecd56f062625a2ac05055ff2eebb86c60a56b62dcbbf53a3ccc9654d31a66 F.E.E.E.E. E.E.E.E..UMAC test vector: 5FD764A6D3A9FD9D ..java.security.NoSuchAlgorithmException: SHA at 0x403eeee6: java.security.NoSuchAlgorithmException.NoSuchAlgorithmException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ee972: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String, java.security.Provider) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ee8ab: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x080585eb: test::jce::TestOfProvider::testSha() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:85) F.java.security.NoSuchAlgorithmException: Whirlpool at 0x0805867b: test::jce::TestOfProvider::testWhirlpool() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:95) F...java.security.NoSuchAlgorithmException: ripemd128 at 0x08057fd2: test::jce::TestOfMessageDigest::testEquality() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfMessageDigest.java:114) F.E..E.E..E.E Time: 440.928 There were 13 errors: 1) testKeyPairGeneration(test.sig.rsa.TestOfRSAKeyGeneration) java.lang.ArithmeticException: not invertible at 0x40308f56: java.lang.ArithmeticException.ArithmeticException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403d53a9: java.math.BigInteger.modInverse(java.math.BigInteger) (/usr/local/gcc/lib/libgcj.so.3) at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805ee1f: test::sig::rsa::TestOfRSAKeyGeneration::testKeyPairGeneration() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAKeyGeneration.java:101) 2) testRSAParams(test.sig.rsa.TestOfRSAKeyGeneration) java.lang.ArithmeticException: not invertible at 0x0805f05a: test::sig::rsa::TestOfRSAKeyGeneration::testRSAParams() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAKeyGeneration.java:118) 3) testRSAPrimitives(test.sig.rsa.TestOfRSAKeyGeneration) java.lang.ArithmeticException: not invertible at 0x0805f63b: test::sig::rsa::TestOfRSAKeyGeneration::testRSAPrimitives() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAKeyGeneration.java:168) 4) testSigWithDefaults(test.sig.rsa.TestOfRSAPSSSignature) java.lang.ArithmeticException: not invertible at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805feb4: test::sig::rsa::TestOfRSAPSSSignature::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAPSSSignature.java:153) 5) testSigWithShaSalt16(test.sig.rsa.TestOfRSAPSSSignature) java.lang.ArithmeticException: not invertible at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805feb4: test::sig::rsa::TestOfRSAPSSSignature::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAPSSSignature.java:153) 6) testSigWithRipeMD160Salt8(test.sig.rsa.TestOfRSAPSSSignature) java.lang.ArithmeticException: not invertible at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805feb4: test::sig::rsa::TestOfRSAPSSSignature::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAPSSSignature.java:153) 7) testKeyPairRawCodec(test.sig.rsa.TestOfRSACodec) java.lang.ArithmeticException: not invertible at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805eb95: test::sig::rsa::TestOfRSACodec::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSACodec.java:148) 8) testSignatureRawCodec(test.sig.rsa.TestOfRSACodec) at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x0805eb95: test::sig::rsa::TestOfRSACodec::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSACodec.java:148) 9) testCloneability(test.jce.TestOfMessageDigest) java.security.NoSuchAlgorithmException: ripemd128 at 0x403ec266: java.security.GeneralSecurityException.GeneralSecurityException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403eeee6: java.security.NoSuchAlgorithmException.NoSuchAlgorithmException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ee972: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String, java.security.Provider) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ee8ab: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x0805836f: test::jce::TestOfMessageDigest::testCloneability() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfMessageDigest.java:144) 10) testDSAKeyPairGenerator(test.jce.TestOfKeyPairGenerator) java.lang.NullPointerException at 0x40311cef: java.lang.NullPointerException.NullPointerException() (/usr/local/gcc/lib/libgcj.so.3) at 0x402f5b89: java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/local/gcc/lib/libgcj.so.3) at 0x402f5bbf: java.lang.Class.forName(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ed448: java.security.KeyPairGenerator.getInstance(java.lang.String, java.lang.String, java.security.Provider) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ed3eb: java.security.KeyPairGenerator.getInstance(java.lang.String, java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x08057770: test::jce::TestOfKeyPairGenerator::testDSAKeyPairGenerator() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfKeyPairGenerator.java:95) 11) testRSAKeyPairGenerator(test.jce.TestOfKeyPairGenerator) java.lang.NullPointerException at 0x40075edd: gnu.crypto.sig.rsa.RSAKeyPairGenerator.nextRandomBytes(byte[]) (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x40075b12: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x40062ca0: gnu.crypto.jce.KeyPairGeneratorAdapter.generateKeyPair() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x403ebda4: java.security.DummyKeyPairGenerator.generateKeyPair() (/usr/local/gcc/lib/libgcj.so.3) at 0x08058aba: test::jce::TestOfSignature::testRSAPSSRawSignature() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfSignature.java:111) 12) testDSSRawSignature(test.jce.TestOfSignature) java.lang.NullPointerException at 0x40311cef: java.lang.NullPointerException.NullPointerException() (/usr/local/gcc/lib/libgcj.so.3) at 0x402f5b89: java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/local/gcc/lib/libgcj.so.3) at 0x402f5bbf: java.lang.Class.forName(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ed448: java.security.KeyPairGenerator.getInstance(java.lang.String, java.lang.String, java.security.Provider) (/usr/local/gcc/lib/libgcj.so.3) at 0x403ed3eb: java.security.KeyPairGenerator.getInstance(java.lang.String, java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x08058991: test::jce::TestOfSignature::testDSSRawSignature() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfSignature.java:89) 13) testRSAPSSRawSignature(test.jce.TestOfSignature) java.lang.NullPointerException at 0x40075edd: gnu.crypto.sig.rsa.RSAKeyPairGenerator.nextRandomBytes(byte[]) (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x40075b12: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x40062ca0: gnu.crypto.jce.KeyPairGeneratorAdapter.generateKeyPair() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) at 0x403ebda4: java.security.DummyKeyPairGenerator.generateKeyPair() (/usr/local/gcc/lib/libgcj.so.3) at 0x08058aba: test::jce::TestOfSignature::testRSAPSSRawSignature() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfSignature.java:111) There were 7 failures: 1) testSignature(test.sig.dss.TestOfDSSSignature)junit.framework.AssertionFailedError: Verify own signature at 0x0805e5de: test::sig::dss::TestOfDSSSignature::testSignature() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/dss/TestOfDSSSignature.java:110) 2) testKeyPairRawCodec(test.sig.dss.TestOfDSSCodec)junit.framework.AssertionFailedError: DSS public key Raw encoder/decoder test at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x0805da15: test::sig::dss::TestOfDSSCodec::testKeyPairRawCodec() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/dss/TestOfDSSCodec.java:111) 3) testSignatureRawCodec(test.sig.dss.TestOfDSSCodec)junit.framework.AssertionFailedError: Signature Raw encoder/decoder test at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x0805dc6f: test::sig::dss::TestOfDSSCodec::testSignatureRawCodec() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/dss/TestOfDSSCodec.java:139) 4) testSha(test.jce.TestOfProvider)junit.framework.AssertionFailedError: testSha() at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x08058638: test::jce::TestOfProvider::testSha() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:88) 5) testWhirlpool(test.jce.TestOfProvider)junit.framework.AssertionFailedError: testWhirlpool() at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x080586c8: test::jce::TestOfProvider::testWhirlpool() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:98) 6) testShaPRNG(test.jce.TestOfProvider)junit.framework.AssertionFailedError: testShaPRNG() at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x08058758: test::jce::TestOfProvider::testShaPRNG() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:108) 7) testEquality(test.jce.TestOfMessageDigest)junit.framework.AssertionFailedError: MessageDigest.getInstance(ripemd128): java.security.NoSuchAlgorithmException: ripemd128 at 0x400a3136: junit.framework.AssertionFailedError.AssertionFailedError(java.lang.String) (/home/olivier/tmp/jjj/lib/lib-junit.so.1) at 0x08058244: test::jce::TestOfMessageDigest::testEquality() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfMessageDigest.java:118) FAILURES!!! Tests run: 101, Failures: 7, Errors: 13 -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au --2oS5YaxWCcQjTEyO Content-Type: application/octet-stream Content-Disposition: attachment; filename="junit.txt.gz" Content-Transfer-Encoding: base64 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 owII7zE9Ovo/RCf9lcbIAAA= --2oS5YaxWCcQjTEyO-- From raif@fl.net.au Wed Jul 03 05:25:43 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17PgOK-0005SX-00 for ; Wed, 03 Jul 2002 05:25:40 -0400 Received: from fl.net.au (a5-p25.syd.fl.net.au [202.181.2.25]) by delenn.fl.net.au (Postfix) with ESMTP id C170217FC6D; Wed, 3 Jul 2002 19:24:17 +1000 (EST) Message-ID: <3D22C2DF.5090507@fl.net.au> Date: Wed, 03 Jul 2002 19:24:47 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Olivier LF Cc: classpathx-crypto Subject: Re: [Classpathx-crypto] GCJ JUnit result. References: <20020701133702.GA22896@zipworld.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: it does not look as bad is it might first seems ;-) Olivier LF wrote: > ... > Anyway, this is the output I get from the JUnit test suite under GCJ > version: gcc (GCC) 3.2 20020518. > > ... > ..java.security.NoSuchAlgorithmException: SHA > at 0x403eeee6: java.security.NoSuchAlgorithmException.NoSuchAlgorithmException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) > at 0x403ee972: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String, java.security.Provider) (/usr/local/gcc/lib/libgcj.so.3) > at 0x403ee8ab: java.security.MessageDigest.getInstance(java.lang.String, java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) > at 0x080585eb: test::jce::TestOfProvider::testSha() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/jce/TestOfProvider.java:85) i had a look at the classpath implementation of the MessageDigest.getInstance and i know why this is throwing the exception: the implemetation *does not* handle algorithm aliasing at all! a simple fix is to replace the following line in the above method (with 2 arguments) with the following: - return getInstance(p.getProperty("MessageDigest." + algorithm), algorithm, p); + // try the name as is + String className = p.getProperty("MessageDigest." + algorithm); + if (className == null) { // try all uppercase + String upper = algorithm.toUpperCase(); + className = p.getProperty("MessageDigest." + upper); + if (className == null) { // try if it's an alias + String alias = p.getProperty("Alg.Alias.MessageDigest." + algorithm); + if (alias == null) { // spit the dummy + throw new NoSuchAlgorithmException(algorithm); + } + className = p.getProperty("MessageDigest." + alias); + if (className == null) { + throw new NoSuchAlgorithmException(algorithm); + } + } + } + return getInstance(className, algorithm, p); > F.java.security.NoSuchAlgorithmException: Whirlpool idem > F...java.security.NoSuchAlgorithmException: ripemd128 idem > F.E..E.E..E.E > Time: 440.928 > There were 13 errors: > 1) testKeyPairGeneration(test.sig.rsa.TestOfRSAKeyGeneration) > java.lang.ArithmeticException: not invertible > at 0x40308f56: java.lang.ArithmeticException.ArithmeticException(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) > at 0x403d53a9: java.math.BigInteger.modInverse(java.math.BigInteger) (/usr/local/gcc/lib/libgcj.so.3) > at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) > at 0x0805ee1f: test::sig::rsa::TestOfRSAKeyGeneration::testKeyPairGeneration() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSAKeyGeneration.java:101) looking at gnu.crypto.rsa.RSAKeyPairGenerator, and the classpath BigInteger implementation, the exception is thrown from line 205 (in the RSA keypair generator): d = e.modInverse(phi); the problem is that if we made it to that line, this exception should not be thrown, hence the cause may be in how modInverse is implemented in the concrete BigInteger class. i'll inspect the source later. > 2) testRSAParams(test.sig.rsa.TestOfRSAKeyGeneration) > java.lang.ArithmeticException: not invertible... > 3) testRSAPrimitives(test.sig.rsa.TestOfRSAKeyGeneration) > java.lang.ArithmeticException: not invertible... > 4) testSigWithDefaults(test.sig.rsa.TestOfRSAPSSSignature) > java.lang.ArithmeticException: not invertible... > 5) testSigWithShaSalt16(test.sig.rsa.TestOfRSAPSSSignature) > java.lang.ArithmeticException: not invertible... > 6) testSigWithRipeMD160Salt8(test.sig.rsa.TestOfRSAPSSSignature) > java.lang.ArithmeticException: not invertible... > 7) testKeyPairRawCodec(test.sig.rsa.TestOfRSACodec) > java.lang.ArithmeticException: not invertible... idem. > 8) testSignatureRawCodec(test.sig.rsa.TestOfRSACodec) > at 0x40075ccb: gnu.crypto.sig.rsa.RSAKeyPairGenerator.generate() (/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) > at 0x0805eb95: test::sig::rsa::TestOfRSACodec::setUp() (/home/olivier/program/cvsrsh/crypto/gcj/source/test/sig/rsa/TestOfRSACodec.java:148) suspect (without knowing at which line it was thrown) that it's at the same place as 2) - 7) above. > 9) testCloneability(test.jce.TestOfMessageDigest) > java.security.NoSuchAlgorithmException: ripemd128 same as the Failures earlier. > 10) testDSAKeyPairGenerator(test.jce.TestOfKeyPairGenerator) > java.lang.NullPointerException... > 11) testRSAKeyPairGenerator(test.jce.TestOfKeyPairGenerator) > java.lang.NullPointerException... > 12) testDSSRawSignature(test.jce.TestOfSignature) > java.lang.NullPointerException... > 13) testRSAPSSRawSignature(test.jce.TestOfSignature) > java.lang.NullPointerException... similar problem (and similar work-around) to the MessageDigest.getInstance() cheers; rsn From olivier@zipworld.com.au Wed Jul 03 09:38:32 2002 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.34 #1 (Debian)) id 17PkL1-0005UW-00 for ; Wed, 03 Jul 2002 09:38:31 -0400 Received: from tournesol.malabar.au (ppp7.dyn10.pacific.net.au [61.8.10.7]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id XAA11570; Wed, 3 Jul 2002 23:38:27 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17PkKz-0000jh-00; Wed, 03 Jul 2002 23:38:29 +1000 Date: Wed, 3 Jul 2002 23:38:28 +1000 From: Olivier LF To: "Raif S. Naffah" Cc: classpathx-crypto Subject: Re: [Classpathx-crypto] GCJ JUnit result. Message-ID: <20020703133828.GA2810@zipworld.com.au> References: <20020701133702.GA22896@zipworld.com.au> <3D22C2DF.5090507@fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D22C2DF.5090507@fl.net.au> User-Agent: Mutt/1.3.28i Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Wed, Jul 03, 2002 at 07:24:47PM +1000, Raif S. Naffah wrote: > > i had a look at the classpath implementation of the > MessageDigest.getInstance and i know why this is throwing the exception: > the implemetation *does not* handle algorithm aliasing at all! First of all be aware that "classpath" and "gcj" don't always share the same code. They are merging differences step by step. In gcj the classes are under: gcc/libjava/java > a simple fix is to replace the following line in the above method (with > 2 arguments) with the following: > > - return getInstance(p.getProperty("MessageDigest." + algorithm), > algorithm, p); > > + // try the name as is > + String className = p.getProperty("MessageDigest." + algorithm); > + if (className == null) { // try all uppercase > + String upper = algorithm.toUpperCase(); > + className = p.getProperty("MessageDigest." + upper); > + if (className == null) { // try if it's an alias > + String alias = p.getProperty("Alg.Alias.MessageDigest." + > algorithm); > + if (alias == null) { // spit the dummy > + throw new NoSuchAlgorithmException(algorithm); > + } > + className = p.getProperty("MessageDigest." + alias); > + if (className == null) { > + throw new NoSuchAlgorithmException(algorithm); > + } > + } > + } > + return getInstance(className, algorithm, p); The gcj implementation of MessageDigest looks the same as classpath. I haven't tried your patch yet. I did try the naive approach of replacing: MessageDigest md = MessageDigest.getInstance("SHA", GNU); ... ... MessageDigest md = MessageDigest.getInstance("WHirlpool", GNU); with: MessageDigest md = MessageDigest.getInstance("SHA-160", GNU); ... ... MessageDigest md = MessageDigest.getInstance("WHIRLPOOL", GNU); In TestOfProvider.java, I now get: java.lang.ClassCastException: gnu.crypto.jce.Sha160Spi cannot be cast to java.security.MessageDigest ... ... java.lang.ClassCastException: gnu.crypto.jce.WhirlpoolSpi cannot be cast to java.security.MessageDigest ??? Oli -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au From raif@fl.net.au Wed Jul 03 12:31:35 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) id 17Pn2V-0005Iy-00 for ; Wed, 03 Jul 2002 12:31:35 -0400 Received: from fl.net.au (a3-p44.syd.fl.net.au [202.181.1.108]) by delenn.fl.net.au (Postfix) with ESMTP id 3FF6017FEF9; Thu, 4 Jul 2002 02:31:29 +1000 (EST) Message-ID: <3D2326FB.1090303@fl.net.au> Date: Thu, 04 Jul 2002 02:31:55 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Olivier LF Cc: classpathx-crypto Subject: Re: [Classpathx-crypto] GCJ JUnit result. References: <20020701133702.GA22896@zipworld.com.au> <3D22C2DF.5090507@fl.net.au> <20020703133828.GA2810@zipworld.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Olivier LF wrote: > ...I did try the naive approach of replacing: > > MessageDigest md = MessageDigest.getInstance("SHA", GNU); > ... > ... > MessageDigest md = MessageDigest.getInstance("WHirlpool", GNU); > > with: > > MessageDigest md = MessageDigest.getInstance("SHA-160", GNU); > ... > ... > MessageDigest md = MessageDigest.getInstance("WHIRLPOOL", GNU); > > In TestOfProvider.java, I now get: > > java.lang.ClassCastException: gnu.crypto.jce.Sha160Spi cannot be cast to > java.security.MessageDigest this is a 2nd bug in the MessageDigest implementation (method getInstance with 3 args) caused by the line: MessageDigest m = (MessageDigest) Class.forName(classname).newInstance(); the fix is: 1. to catch the ClassCastException, 2. test if the newly instantiated class is an instance of java.security.MessageDigestSpi, 3. if it isnt throw the exception, otherwise 4. wrap the newly instantiated class in a proxy class that channels the MessageDigest calls to the wrapped Spi class. how about that! we started testing our code, and ended up testing the gcj/classpath. do you have enough info to file bug reports? cheers; rsn From raif@fl.net.au Mon Jul 08 00:47:01 2002 Received: from monty-python.gnu.org ([199.232.76.173] helo=monty-python) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17RQ4J-0003XY-00 for ; Mon, 08 Jul 2002 00:24:11 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python with esmtp (Exim 4.05) id 17R7kD-0000jG-00 for classpathx-crypto@gnu.org; Sun, 07 Jul 2002 04:50:13 -0400 Received: from fl.net.au (a5-p57.syd.fl.net.au [202.181.2.57]) by delenn.fl.net.au (Postfix) with ESMTP id 43FD817FCF8; Sun, 7 Jul 2002 18:50:18 +1000 (EST) Message-ID: <3D2800E5.1060303@fl.net.au> Date: Sun, 07 Jul 2002 18:50:45 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] latest checkin Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: i checked in this afternoon an implementation of David McGrew's TMMH/16 (version 1) -gnu.crypto.mac.TMMH16- as well as a test case for it -test.mac.TestOfTMMH16. this is in preparation for the implementation of the UST (Universal Security Transform). the count of tests is now up to 93! i.e. if you run: ant test you should see at the end: [junit] OK (93 tests) other classes were also amended to allow instantiation for this new algorithm. i also implemented Cloneability for the PRNG implementations we already have. cheers; rsn From olivier@zipworld.com.au Mon Jul 08 09:16:50 2002 Received: from delysid.gnu.org ([158.121.106.20]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17RXQL-0002r0-00 for ; Mon, 08 Jul 2002 08:15:25 -0400 Received: from mailman.zeta.org.au ([203.26.10.16]) by delysid.gnu.org with esmtp (Exim 3.34 #2) id 17QkbF-0001BS-00 for ; Sat, 06 Jul 2002 04:07:25 -0400 Received: from tournesol.malabar.au (ppp150.dyn27.pacific.net.au [61.8.27.150]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id SAA13161 for ; Sat, 6 Jul 2002 18:07:10 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17QkYP-0001eQ-00 for ; Sat, 06 Jul 2002 18:04:29 +1000 Date: Sat, 6 Jul 2002 18:04:28 +1000 To: classpathx-crypto Message-ID: <20020706080428.GA6340@zipworld.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i From: Olivier LF Subject: [Classpathx-crypto] GCJ build now support JUnit. Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: I have updated the GCJ build to support JUnit testing. Basically configure supports an extra flag: --with-junit-jar=/path/to/junit.jar If this flag is given, the generated makefiles will build the JUnit test suite. Note that you must have a native JUnit shared library build with GCJ as well. I have put together instructions on how to do that at: http://www.zipworld.com.au/~olivier/gcj.html However since I updated to the latest crypto sources I get: tournesol:~/tmp/ccc$ source/junitTest Exception in thread "main" java.lang.InternalError: anubis-128 at 0x40318a32: java.lang.Throwable.Throwable(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x40309866: java.lang.Error.Error(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x40319286: java.lang.VirtualMachineError.VirtualMachineError(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x4030b436: java.lang.InternalError.InternalError(java.lang.String) (/usr/local/gcc/lib/libgcj.so.3) at 0x4003b25a: gnu.crypto.cipher.CipherFactory.getInstance(java.lang.String)(/home/olivier/tmp/ccc/source/.libs/lib-gnu-crypto.so.1) It looks like Anubis cipher does not pass its selftest anymore? or is it a new feature? I'll investigate more. I also have to try your GCJ patches Raif. Oli -- ---------------------------------------------------------------------- Olivier Louchart-Fletcher Email: olivier@zipworld.com.au Phone (home) (61 2) 9798 0596 From raif@fl.net.au Fri Jul 26 22:36:58 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17YHRx-0006wR-00 for ; Fri, 26 Jul 2002 22:36:58 -0400 Received: from fl.net.au (a4-p16.syd.fl.net.au [202.181.2.80]) by delenn.fl.net.au (Postfix) with ESMTP id C3E8317FC25 for ; Sat, 27 Jul 2002 12:37:42 +1000 (EST) Message-ID: <3D42077D.2080105@fl.net.au> Date: Sat, 27 Jul 2002 12:37:49 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] latest checkins Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello guys, i've checked in more JCE Adapters to wrap all our secure PRNG implementations, and added a small test to the TestOfProvider in test.jce for that. earlier i checked in an implementation of David McGrew's UST algorithm. i'm still waiting for its review --which is why i didnt announce it earlier. finally i updated the build.xml, Makefile.in (in toplevel) and Makefile.am (in gcj/source). i tested the two former ones but was unable to try the gcj version because (a) dont have a working gcj and (b) dont have autoconfigure2.50. i'd like to aim for the 30th of August as the date for the first public release of the library. so from now on it's concentrating on: a. the documentation: organisation, spelling, clarity, etc... b. the build process: ANT and the 2 makes --i/we probably would need help with Nic's automakejar tool; any takers? c. sort out the test vector issue; and finally d. sort out signing the distribution issue. volunteers for above tasks, and ideas/suggestions about the still open issues are welcome. cheers; rsn From olivier@zipworld.com.au Sun Jul 28 02:12:10 2002 Received: from mailman.zeta.org.au ([203.26.10.16]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17YhHl-00012b-00 for ; Sun, 28 Jul 2002 02:12:10 -0400 Received: from tournesol.malabar.au (ppp157.dyn27.pacific.net.au [61.8.27.157]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id QAA19281; Sun, 28 Jul 2002 16:12:04 +1000 Received: from olivier by tournesol.malabar.au with local (Exim 3.35 #1 (Debian)) id 17YhI6-00063a-00; Sun, 28 Jul 2002 16:12:30 +1000 Date: Sun, 28 Jul 2002 16:12:29 +1000 To: "Raif S. Naffah" Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] latest checkins Message-ID: <20020728061229.GA672@zipworld.com.au> References: <3D42077D.2080105@fl.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D42077D.2080105@fl.net.au> User-Agent: Mutt/1.3.28i From: Olivier LF Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Sat, Jul 27, 2002 at 12:37:49PM +1000, Raif S. Naffah wrote: > ... > ... > finally i updated the build.xml, Makefile.in (in toplevel) and > Makefile.am (in gcj/source). i tested the two former ones but was > unable to try the gcj version because (a) dont have a working gcj and > (b) dont have autoconfigure2.50. I have updated the GCJ build accordingly. Both crypto library and JUnit test suite build successfully however Anubis still does not pass its self test! Making the GCJ build mostly useless for now... Anyway it is there. Oli ---------------------------------------------------------------------- Olivier Louchart-Fletcher olivier -at- zipworld com au From raif@fl.net.au Sun Jul 28 05:53:24 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17Ykjs-00041m-00 for ; Sun, 28 Jul 2002 05:53:24 -0400 Received: from fl.net.au (a3-p05.syd.fl.net.au [202.181.1.69]) by delenn.fl.net.au (Postfix) with ESMTP id 7D33117FE28; Sun, 28 Jul 2002 19:53:22 +1000 (EST) Message-ID: <3D43BEFA.2060605@fl.net.au> Date: Sun, 28 Jul 2002 19:52:58 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Olivier LF Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] latest checkins References: <3D42077D.2080105@fl.net.au> <20020728061229.GA672@zipworld.com.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Olivier LF wrote: > On Sat, Jul 27, 2002 at 12:37:49PM +1000, Raif S. Naffah wrote: > >>... >>... >>finally i updated the build.xml, Makefile.in (in toplevel) and >>Makefile.am (in gcj/source). i tested the two former ones but was >>unable to try the gcj version because (a) dont have a working gcj and >>(b) dont have autoconfigure2.50. > > > I have updated the GCJ build accordingly. thanks a bunch! > Both crypto library and JUnit test suite build successfully however > Anubis still does not pass its self test! Anubis does not have anything specially different than the other ciphers --in terms of the java language constructs and invocations. does any other cipher pass its self-test? cheers; rsn From raif@fl.net.au Thu Aug 01 16:14:20 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17aMKy-0006v4-00 for ; Thu, 01 Aug 2002 16:14:20 -0400 Received: from fl.net.au (a3-p44.syd.fl.net.au [202.181.1.108]) by delenn.fl.net.au (Postfix) with ESMTP id 6AF9018003B; Fri, 2 Aug 2002 06:15:16 +1000 (EST) Message-ID: <3D4996D6.9040504@fl.net.au> Date: Fri, 02 Aug 2002 06:15:18 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: nferrier@tapsellferrier.co.uk, "classpathx-crypto@gnu.org" References: <20020731083811.GB27005@dog.net.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] export issues Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: it was brought to my attention that there may be some export issues regarding the distribution of gnu.crypto code. the concern is related to the fact that: although most of the developers reside outside the USA, the gnu.crypto project is officially distributed (a) by the FSF (b) from the USA. is anybody aware of any limitation or legal issues that should be addressed before we release/distribute our code? should an FSF legal person be consulted on this? cheers; rsn From mark@wildebeest.org Thu Aug 01 16:27:43 2002 Received: from node1c5f.a2000.nl ([62.108.28.95] helo=nescio.wildebeest.org) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17aMXv-0007jv-00 for ; Thu, 01 Aug 2002 16:27:43 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26] helo=elsschot ident=mail) by nescio.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 17aMXF-0005Qw-00 for ; Thu, 01 Aug 2002 22:27:01 +0200 Received: from mark by elsschot with local (Exim 3.35 #1 (Debian)) id 17aMXt-0008Gj-00 for ; Thu, 01 Aug 2002 22:27:41 +0200 From: Mark Wielaard To: classpathx-crypto@gnu.org Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Ximian Evolution 1.0.7 Date: 01 Aug 2002 22:27:41 +0200 Message-Id: <1028233661.31628.11.camel@elsschot> Mime-Version: 1.0 Subject: [Classpathx-crypto] Security provider in gcj (temporarily removed) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hi, I noticed that a couple of people on this list try to get gnu.crypto working with gcj. I hope that I can help a bit and I had recently merged the GNU Classpath security provider classes with libgcj (GNU Classpath and libgcj are merging but it will take some time before everything is merged see http://gcc.gnu.org/java/libgcj-classpath-compare.html). Unfortunately the addition of those files broken the powerpc build in some mysterious way so I had to remove them again. Since this does not seem to impact any other platform you might want to wait updating your libgcj tree again if you depend on those files being present. Below is the ChangeLog entry. I hope that I can figure out this weekend what exactly broke and add these files again to libgcj. 2002-08-01 Mark Wielaard Revert patch that breaks libgcj shared library on powerpc: * gnu/java/security/provider/Gnu.java: Reverse referencing all implementation classes by using Class.getName(). Uses Strings again. * gnu/java/security/der/DEREncodingException.java, gnu/java/security/provider/DERReader.java, gnu/java/security/provider/DERWriter.java, gnu/java/security/provider/DSAKeyPairGenerator.java, gnu/java/security/provider/DSAParameterGenerator.java, gnu/java/security/provider/DSAParameters.java, gnu/java/security/provider/DSASignature.java, gnu/java/security/provider/GnuDSAPrivateKey.java, gnu/java/security/provider/GnuDSAPublicKey.java, gnu/java/security/provider/MD5.java, gnu/java/security/util/Prime.java: Removed. * Makefile.am (ordinary_java_source_files): Remove above files. * Makefile.in: Regenerate. * gnu/java/security/provider/DefaultPolicy.java (getPermissions): Revert to maintaining static class variable of Permissions. * gnu/java/security/provider/SHA.java (engineUpdate): Revert algorithm change. (engineDigest): Revert algorithm change. For more info on the breakage see . Sorry for the inconvenience. Cheers, Mark From nferrier@tapsellferrier.co.uk Thu Aug 01 17:16:22 2002 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17aNIz-00040M-00 for ; Thu, 01 Aug 2002 17:16:22 -0400 Received: from host217-34-135-21.in-addr.btopenworld.com ([217.34.135.21] helo=pooh-sticks-bridge.tapsellferrier.co.uk) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17aNT8-0003az-00; Thu, 01 Aug 2002 22:26:50 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" References: <20020731083811.GB27005@dog.net.uk> <3D4996D6.9040504@fl.net.au> From: Nic Ferrier Date: 01 Aug 2002 22:26:42 +0100 In-Reply-To: <3D4996D6.9040504@fl.net.au> Message-ID: <87r8hinuct.fsf@pooh-sticks-bridge.tapsellferrier.co.uk> Lines: 20 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: [Classpathx-crypto] Re: export issues Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > it was brought to my attention that there may be some export issues > regarding the distribution of gnu.crypto code. > > the concern is related to the fact that: although most of the developers > reside outside the USA, the gnu.crypto project is officially distributed > (a) by the FSF (b) from the USA. is anybody aware of any limitation or > legal issues that should be addressed before we release/distribute our > code? should an FSF legal person be consulted on this? I don't think there are any issues anymore. Can you tell me (privately please) who the developers for the project are (in the past as well as now) and where they reside? I will consult the relevant people for you. Nic From mstatic@metastatic.org Thu Aug 01 18:23:02 2002 Received: from jareth.dreamhost.com ([66.33.198.201]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17aOLV-00020o-00 for ; Thu, 01 Aug 2002 18:23:02 -0400 Received: from gradius.dreamhost.com (basic-quack.gradius.dreamhost.com [66.33.198.251]) by jareth.dreamhost.com (Postfix) with ESMTP id E2A266B5EA; Thu, 1 Aug 2002 15:23:00 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g71MN1b25017; Thu, 1 Aug 2002 15:23:01 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Thu, 1 Aug 2002 15:23:00 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] export issues In-Reply-To: <3D4996D6.9040504@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Fri, 2 Aug 2002, Raif S. Naffah wrote: > it was brought to my attention that there may be some export issues > regarding the distribution of gnu.crypto code. > > the concern is related to the fact that: although most of the developers > reside outside the USA, the gnu.crypto project is officially distributed > (a) by the FSF (b) from the USA. is anybody aware of any limitation or > legal issues that should be addressed before we release/distribute our > code? should an FSF legal person be consulted on this? > (Caveat: IANAL) I think, according to Export Administrations Regulations section 740.13(e), open-source encryption software can be exported without regulation, as long as (1) it is not made available for download to Cuba, Iran, Iraq, Libya, North Korea, Sudan or Syria and (2) you notify the Bureau of Industry and Security at before it is made publicly available. Want to sift through United States export regulations? Look at http://w3.access.gpo.gov/bis/ear/ear_data.html Part 740, which appears to be the relevant one, is at: http://w3.access.gpo.gov/bis/ear/{pdf,txt}/740.{pdf,txt} -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From mstatic@metastatic.org Thu Aug 01 21:30:31 2002 Received: from jareth.dreamhost.com ([66.33.198.201]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17aRGx-0000bu-00 for ; Thu, 01 Aug 2002 21:30:31 -0400 Received: from gradius.dreamhost.com (basic-quack.gradius.dreamhost.com [66.33.198.251]) by jareth.dreamhost.com (Postfix) with ESMTP id 0DD326B5FA; Thu, 1 Aug 2002 18:30:30 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g721UUn04238; Thu, 1 Aug 2002 18:30:30 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Thu, 1 Aug 2002 18:30:29 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] latest checkins In-Reply-To: <3D43BEFA.2060605@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Sun, 28 Jul 2002, Raif S. Naffah wrote: > Olivier LF wrote: > > On Sat, Jul 27, 2002 at 12:37:49PM +1000, Raif S. Naffah wrote: > > > Both crypto library and JUnit test suite build successfully however > > Anubis still does not pass its self test! > > Anubis does not have anything specially different than the other ciphers > --in terms of the java language constructs and invocations. does any > other cipher pass its self-test? > I think this is an optimization bug in GCJ. I inspected the selfTest() method, and using good old print-out-the-state debugging found out that selfTest() actually passes all of its tests -- ie it gets past the two nested for loops -- but for some reason returns false. I re-made the GCJ build after removing the -O2 flag and every cipher test succeeds. It also works with just -O. As for the other two build methods, Ant works for me, yet the top-level make seems to want either the NIST test vectors to be in the tree, or wants to try to build them (and there is no target for them). I'm guessing that the test vectors will be included in the distribution, or that the Makefile will not include these files and there will be a pointer in the documentation to download and test these files. I did some profiling of the libraries and discovered that because Serpent creates a new integer array for every block it processes, a LOT of objects are allocated during execution. This could be a problem in low-memory devices, where a lot of time will be taken up with garbage collection. Making the integer array 'x' on lines 597 and 686 a private instance variable will correct this, but breaks thread-safety (if that's an issue). -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Sat Aug 03 05:21:57 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17av6i-00036j-00 for ; Sat, 03 Aug 2002 05:21:56 -0400 Received: from fl.net.au (a4-p12.syd.fl.net.au [202.181.2.76]) by delenn.fl.net.au (Postfix) with ESMTP id 0152417FB7D; Sat, 3 Aug 2002 19:22:54 +1000 (EST) Message-ID: <3D4BA0EE.7000806@fl.net.au> Date: Sat, 03 Aug 2002 19:22:54 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Casey Marshall Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] latest checkins References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, Casey Marshall wrote: > On Sun, 28 Jul 2002, Raif S. Naffah wrote: > > >>Olivier LF wrote: >> >>>On Sat, Jul 27, 2002 at 12:37:49PM +1000, Raif S. Naffah wrote: >> >>>Both crypto library and JUnit test suite build successfully however >>>Anubis still does not pass its self test! >> >>Anubis does not have anything specially different than the other ciphers >>--in terms of the java language constructs and invocations. does any >>other cipher pass its self-test? > > I think this is an optimization bug in GCJ. I inspected the selfTest() > method, and using good old print-out-the-state debugging found out that > selfTest() actually passes all of its tests -- ie it gets past the two > nested for loops -- but for some reason returns false. I re-made the > GCJ build after removing the -O2 flag and every cipher test succeeds. > It also works with just -O. excellent detective work! are the gcj people aware of this? would it help'em if you submit a bug-report with sample code? > As for the other two build methods, Ant works for me, yet the top-level > make seems to want either the NIST test vectors to be in the tree, or > wants to try to build them (and there is no target for them). I'm guessing > that the test vectors will be included in the distribution, or that the > Makefile will not include these files and there will be a pointer in > the documentation to download and test these files. i'm spending this weekend looking at this. i'm more or less convinced that the test-vectors (a) can be generated by a special target in the make/ant files, that can be invoked on its own, and (b) should be jarred and made available for download. unless somebody convinces me otherwise this is how i shall be proceeding. > I did some profiling of the libraries... care to elaborate?! >... and discovered that because Serpent > creates a new integer array for every block it processes, a LOT of objects > are allocated during execution. This could be a problem in low-memory > devices, where a lot of time will be taken up with garbage collection. > > Making the integer array 'x' on lines 597 and 686 a private instance > variable will correct this, but breaks thread-safety (if that's an issue). we can always use the "lock" object in the BaseCipher to protect those code blocks. the other 2 alternatives are: * in-line the transform() (and its inverse) in the encrypt() and decrypt() methods, and use 4 ints rather than the int[]. * re-write the code to eliminate the need for this array. (i'll send you in private an implementation i did for the Serpent's authors for their AES submission that may give you an idea about what i'm talking about). i guess we have to add to our checklist of TODO list before the release the thread-safety issue you raise. when we identify such a case the documentation has to make it clear that it is an issue the user has to be aware of; e.g. something in the class javadoc like:

    Implementation issue: This implementation is not thread-safe...

    or something like that. cheers; rsn From mstatic@metastatic.org Sat Aug 03 19:23:07 2002 Received: from jareth.dreamhost.com ([66.33.198.201]) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17b8El-0007A5-00 for ; Sat, 03 Aug 2002 19:23:07 -0400 Received: from gradius.dreamhost.com (basic-quack.gradius.dreamhost.com [66.33.198.251]) by jareth.dreamhost.com (Postfix) with ESMTP id B3BC66B5F9; Sat, 3 Aug 2002 16:23:05 -0700 (PDT) Received: from localhost (mstatic@localhost) by gradius.dreamhost.com (8.11.0/8.9.3/Debian 8.9.3-21) with ESMTP id g73NN5X29224; Sat, 3 Aug 2002 16:23:05 -0700 X-Authentication-Warning: gradius.dreamhost.com: mstatic owned process doing -bs Date: Sat, 3 Aug 2002 16:23:05 -0700 (PDT) From: Casey Marshall X-X-Sender: mstatic@gradius.dreamhost.com Reply-To: Casey Marshall To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] latest checkins In-Reply-To: <3D4BA0EE.7000806@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Sat, 3 Aug 2002, Raif S. Naffah wrote: > hello Casey, > > Casey Marshall wrote: > > On Sun, 28 Jul 2002, Raif S. Naffah wrote: > > > >>Anubis does not have anything specially different than the other ciphers > >>--in terms of the java language constructs and invocations. does any > >>other cipher pass its self-test? > > > > I think this is an optimization bug in GCJ. I inspected the selfTest() > > method, and using good old print-out-the-state debugging found out that > > selfTest() actually passes all of its tests -- ie it gets past the two > > nested for loops -- but for some reason returns false. I re-made the > > GCJ build after removing the -O2 flag and every cipher test succeeds. > > It also works with just -O. > > excellent detective work! are the gcj people aware of this? would it > help'em if you submit a bug-report with sample code? > I'll look at their list archives to see if this has come up before; if not I'll post a message. > [...] > > > I did some profiling of the libraries... > > care to elaborate?! > I was testing out an evaluation version of a Java profiler (I think it was JProfiler -- which isn't worth it; proprietary and too expensive) and put it through its paces by running the gnu-crypto test suite (plus testing the full NIST vectors). I was rather shocked/amused to see the number of int arrays climb to 25,000, then fall back to zero while Serpent was running. > >... and discovered that because Serpent > > creates a new integer array for every block it processes, a LOT of objects > > are allocated during execution. This could be a problem in low-memory > > devices, where a lot of time will be taken up with garbage collection. > > > > Making the integer array 'x' on lines 597 and 686 a private instance > > variable will correct this, but breaks thread-safety (if that's an issue). > > we can always use the "lock" object in the BaseCipher to protect those > code blocks. > > the other 2 alternatives are: > > * in-line the transform() (and its inverse) in the encrypt() and > decrypt() methods, and use 4 ints rather than the int[]. > Won't work. The S-Box functions would also need to be in-lined, and this would make the code much less readable. (It's situations like this that make me want a Java preprocessor.) > * re-write the code to eliminate the need for this array. (i'll send you > in private an implementation i did for the Serpent's authors for their > AES submission that may give you an idea about what i'm talking about). > I'll look into this. > i guess we have to add to our checklist of TODO list before the release > the thread-safety issue you raise. when we identify such a case the > documentation has to make it clear that it is an issue the user has to > be aware of; e.g. something in the class javadoc like: > >

    Implementation issue: This implementation is not > thread-safe...

    > > or something like that. > Or mention generally that the library is not necessarily thread-safe, if thread safety is not a big issue for this library. -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Wed Aug 07 07:02:55 2002 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17cOaZ-0005Lv-00 for ; Wed, 07 Aug 2002 07:02:53 -0400 Received: from fl.net.au (a4-p03.syd.fl.net.au [202.181.2.67]) by delenn.fl.net.au (Postfix) with ESMTP id 2D8D117FFEB; Wed, 7 Aug 2002 21:03:43 +1000 (EST) Message-ID: <3D50FE8B.6060505@fl.net.au> Date: Wed, 07 Aug 2002 21:03:39 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] latest checkins (long) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi guys, i just checked in some bug-fixes, few additions and one new tool: Ent --a java port of John Walker's ENT program (see http://www.fourmilab.ch/). its purpose is to compute some statistical indices for a given stream to assess its degree of randomness. here is the output of: ant ent ent: [java] Total execution time (ms): 631 [java] Computed indices for MD4PRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.4999542236328125 [java] Mean % deviation: 0.0091552734375 [java] Chi-square distribution: 0.0703125 [java] Chi-square excess % probability: 50.0 [java] Computed PI: 3.143475126171593 [java] Computed PI % deviation: 0.05992096332568889 [java] Serial Correlation Coefficient: -1.6697682580239272E-5 [java] Total execution time (ms): 771 [java] Computed indices for RIPEMD128PRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.5000506639480591 [java] Mean % deviation: 0.010132789611816406 [java] Chi-square distribution: 0.08612871170043945 [java] Chi-square excess % probability: 50.0 [java] Computed PI: 3.138668589281423 [java] Computed PI % deviation: 0.09307585771914455 [java] Serial Correlation Coefficient: 7.295505921987954E-4 [java] Total execution time (ms): 1102 [java] Computed indices for ICM: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.49994516372680664 [java] Mean % deviation: 0.010967254638671875 [java] Chi-square distribution: 0.10089874267578125 [java] Chi-square excess % probability: 50.0 [java] Computed PI: 3.1437726736933658 [java] Computed PI % deviation: 0.06939219510465874 [java] Serial Correlation Coefficient: -3.490568320705976E-4 [java] Total execution time (ms): 701 [java] Computed indices for MD5PRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.5000228881835938 [java] Mean % deviation: 0.00457763671875 [java] Chi-square distribution: 0.017578125 [java] Chi-square excess % probability: 75.0 [java] Computed PI: 3.135807555418226 [java] Computed PI % deviation: 0.18414539405536265 [java] Serial Correlation Coefficient: -5.865306605768334E-5 [java] Total execution time (ms): 961 [java] Computed indices for WHIRLPOOLPRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.5002869367599487 [java] Mean % deviation: 0.057387351989746094 [java] Chi-square distribution: 2.762627124786377 [java] Chi-square excess % probability: 10.0 [java] Computed PI: 3.138668589281423 [java] Computed PI % deviation: 0.09307585771914455 [java] Serial Correlation Coefficient: 5.689114690354338E-5 [java] Total execution time (ms): 781 [java] Computed indices for RIPEMD160PRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.49994874000549316 [java] Mean % deviation: 0.010251998901367188 [java] Chi-square distribution: 0.08816719055175781 [java] Chi-square excess % probability: 50.0 [java] Computed PI: 3.1433149082752543 [java] Computed PI % deviation: 0.054821069290864416 [java] Serial Correlation Coefficient: -8.488752540050106E-5 [java] Total execution time (ms): 731 [java] Computed indices for SHA-160PRNG: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.4998607635498047 [java] Mean % deviation: 0.0278472900390625 [java] Chi-square distribution: 0.6505126953125 [java] Chi-square excess % probability: 50.0 [java] Computed PI: 3.1392636843249675 [java] Computed PI % deviation: 0.07413339416121897 [java] Serial Correlation Coefficient: -4.4878134782710987E-4 [java] Total execution time (ms): 411 [java] Computed indices for UMAC-KDF: [java] Total bit count: 8388608 [java] Mean value of set bits: 0.5000001192092896 [java] Mean % deviation: 2.384185791015625E-5 [java] Chi-square distribution: 4.76837158203125E-7 [java] Chi-square excess % probability: 75.0 [java] Computed PI: 3.1365857566290156 [java] Computed PI % deviation: 0.15937448017190523 [java] Serial Correlation Coefficient: -1.4114379888497644E-4 BUILD SUCCESSFUL Total time: 13 seconds sorting the indices by: * time: shows that UMacGenerator is the fastest, and ICMGenerator is the slowest; * mean % deviation: shows that UMacGenerator is the closest to 0.5 and Whirlpool is the farthest; * scc: shows that MD4-based PRNG is closest to 0.0, and RIPEMD-160-based PRNG is the farthest; it would be nice, if someone goes through the code and make sure i didnt code the formulae incorrectly and, may be in the future, add more indices and/or a gui face to the tool. i'll continue working on the build and make files for now. cheers; rsn From mark@wildebeest.org Sun Aug 11 08:29:26 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17drqY-0001ya-00 for classpathx-crypto@gnu.org; Sun, 11 Aug 2002 08:29:26 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17drqW-0001yO-00 for classpathx-crypto@gnu.org; Sun, 11 Aug 2002 08:29:25 -0400 Received: from node1c5f.a2000.nl ([62.108.28.95] helo=nescio.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17drqW-0001yJ-00 for classpathx-crypto@gnu.org; Sun, 11 Aug 2002 08:29:24 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26] helo=elsschot ident=mail) by nescio.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 17drpi-0001jm-00 for ; Sun, 11 Aug 2002 14:28:34 +0200 Received: from mark by elsschot with local (Exim 3.35 #1 (Debian)) id 17drqS-0008R2-00 for ; Sun, 11 Aug 2002 14:29:20 +0200 Subject: Re: [Classpathx-crypto] Security provider in gcj (temporarily removed) From: Mark Wielaard To: classpathx-crypto@gnu.org In-Reply-To: <1028233661.31628.11.camel@elsschot> References: <1028233661.31628.11.camel@elsschot> Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Ximian Evolution 1.0.7 Date: 11 Aug 2002 14:29:19 +0200 Message-Id: <1029068959.6555.79.camel@elsschot> Mime-Version: 1.0 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Hi, On Thu, 2002-08-01 at 22:27, Mark Wielaard wrote: > Unfortunately the addition of those files broken the powerpc build in > some mysterious way so I had to remove them again. Since this does not > seem to impact any other platform you might want to wait updating your > libgcj tree again if you depend on those files being present. Below is > the ChangeLog entry. I hope that I can figure out this weekend what > exactly broke and add these files again to libgcj. Finally figured out what the real problem was. The patch has been reverted. Please make sure you are using binutils version 2.12.90.0.15 or higher when working with a recent CVS checkout of libgcj. Cheers, Mark From raif@fl.net.au Thu Aug 15 09:12:01 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17fKPx-0003Gq-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 09:12:01 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17fKPu-0003Ee-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 09:12:00 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17fKPu-0003EZ-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 09:11:58 -0400 Received: from fl.net.au (a5-p13.syd.fl.net.au [202.181.2.13]) by delenn.fl.net.au (Postfix) with ESMTP id BA3FD17FCDA for ; Thu, 15 Aug 2002 23:13:21 +1000 (EST) Message-ID: <3D5BA8E2.1010607@fl.net.au> Date: Thu, 15 Aug 2002 23:13:06 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] gnu.crypto 1.0.0 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi guys, i've checked in recently some mods to the build.xml, Makefile.in (toplevel) and Makefile.am (gcj/source). except for the latter, i tested both the ant build process as well as the gnu make one (toplevel again). i would appreciate it if somebody can double-check by, at least, doing: * ant release and/or $ ./configure $ RELEASE=1.0.0 make -e release and, for each: $ md5sum --check gnu-crypto-1.0.0.md5 i've also tagged the module with ver_1_0_0 in preparation of the release. i'm now going through the javadoc. a few days ago, i added some tables to the home page showing the results of the library's tools. again, a critical eye would be helpful. cheers; rsn From nferrier@tapsellferrier.co.uk Thu Aug 15 11:17:14 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17fMN8-0003XL-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 11:17:14 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17fMN5-0003X2-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 11:17:13 -0400 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by monty-python.gnu.org with esmtp (Exim 4.10) id 17fMN5-0003Wx-00 for classpathx-crypto@gnu.org; Thu, 15 Aug 2002 11:17:11 -0400 Received: from [194.74.202.254] (helo=NFERRIER) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17fMYs-0001BQ-00; Thu, 15 Aug 2002 16:29:22 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] gnu.crypto 1.0.0 References: <3D5BA8E2.1010607@fl.net.au> From: nferrier@tapsellferrier.co.uk Date: 15 Aug 2002 16:11:28 +0100 In-Reply-To: <3D5BA8E2.1010607@fl.net.au> Message-ID: Lines: 4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: well done. Nic From harmeet@kodemuse.com Wed Aug 21 18:18:04 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17hdng-0001Bh-00 for classpathx-crypto@gnu.org; Wed, 21 Aug 2002 18:18:04 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17hdnd-0001Ay-00 for classpathx-crypto@gnu.org; Wed, 21 Aug 2002 18:18:03 -0400 Received: from [207.62.207.39] (helo=DB3) by monty-python.gnu.org with smtp (Exim 4.10) id 17hdnc-0001Aq-00 for classpathx-crypto@gnu.org; Wed, 21 Aug 2002 18:18:01 -0400 Received: from 209.226.152.152 by KodeMuse 1.03.30 SMTP Server;Thu, 22 Aug 2002 15:07:30 -0800 Message-ID: <7481705.1030054059347.JavaMail.harmeet@kodemuse.com> From: "Harmeet Bedi" To: Date: Wed, 21 Aug 2002 18:18:06 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-KodeMuseMTA-kodemuse.com: MTA at kodemuse.com 1 X-KodeMuseMTA-MsgID: 12929512.13366.-12505 X-KodeMuseMTA-RcvdDate: Thu, 22 Aug 2002 15:07:30 -0800 Subject: [Classpathx-crypto] (no subject) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: From john@enterprise.com Sun Aug 25 02:20:58 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17iqld-0006J3-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:20:57 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17iql7-0006HZ-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:20:57 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17iql6-0006HT-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:20:24 -0400 Received: from enterprise.com (a3-p40.syd.fl.net.au [202.181.1.104]) by delenn.fl.net.au (Postfix) with ESMTP id A16E317FCD8 for ; Sun, 25 Aug 2002 16:22:04 +1000 (EST) Message-ID: <3D687777.8090405@enterprise.com> Date: Sun, 25 Aug 2002 16:21:43 +1000 From: "John T. Kirk" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" X-Enigmail-Version: 0.65.1.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] release 1.0.0 remaining todos Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello there, i went though the generated javadocs, and after fixing some minor html tags in few classes that were causing emission of javadoc warnings, i believe the library is ready for its birthday release. unless somebody else notes otherwise, we are ready for the release. since i also started using jdk 1.4 (j2sdk1.4.0_01 and j2sdk1.4.1) i noticed that more javadoc warnings are emitted unless a "-breakiterator" option is included in the command line of the javadoc tool (thru ANT 1.5 but this is secondary). i refactored the "docs" ant task and added some testes to invoke the javadoc tool with appropriate options depending on the jdk used to run the ant tool. i also tagged both the sources and the web pages in the cvs trees with tha tag "ver_1_0_0". the 3 remaining questions/tasks before the release are: 1. draft the announcement text and decide where to publish it, 2. move the deliverables to a download location, 3. decide on an incantation to cover export control sensitivities. re. #1, i'll send later a draft of the announcement text for comments. re. #2, the home page refers to where there's already a crypto-build-demo.tar.gz that i believe Nic put there while working on the Makefile process. 2 questions: q1. should we use this location or a "crypto" subdirectory underneath to mirror the web pages organisation? q2. how can i upload files to the agreed location? re. #3, i propose replacing: "You can download..." which is the first paragraph of the "Downloads" section, to "Provided you are legally allowed, you can download..." comments? cheers; rsn From raif@fl.net.au Sun Aug 25 02:34:56 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17iqzA-00070X-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:34:56 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17iqz8-00070L-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:34:56 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17iqz8-00070F-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 02:34:54 -0400 Received: from fl.net.au (a3-p40.syd.fl.net.au [202.181.1.104]) by delenn.fl.net.au (Postfix) with ESMTP id C0F5217FEA3 for ; Sun, 25 Aug 2002 16:36:38 +1000 (EST) Message-ID: <3D687AE2.7060102@fl.net.au> Date: Sun, 25 Aug 2002 16:36:18 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] release 1.0.0 remaining todos References: <3D687777.8090405@enterprise.com> X-Enigmail-Version: 0.65.1.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: apologies for the fake from address but that was me experimenting with mozilla. John T. Kirk wrote... cheers; rsn From raif@fl.net.au Sun Aug 25 04:15:41 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17isYf-0002F5-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 04:15:41 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17isYd-0002Eh-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 04:15:40 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17isYc-0002Ec-00 for classpathx-crypto@gnu.org; Sun, 25 Aug 2002 04:15:39 -0400 Received: from fl.net.au (a3-p40.syd.fl.net.au [202.181.1.104]) by delenn.fl.net.au (Postfix) with ESMTP id 33E38180206 for ; Sun, 25 Aug 2002 18:17:23 +1000 (EST) Message-ID: <3D68927E.606@fl.net.au> Date: Sun, 25 Aug 2002 18:17:02 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" X-Enigmail-Version: 0.65.1.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] GNU Crypto release 1.0.0 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi there, here is the proposed announcement text. the list of recepients is given at the end. i also intend on forwarding a copy to the included algorithms' author(s). ----- The GNU Crypto team is proud to anounce the release of the first version of the gnu.crypto library. GNU Crypto is a 100% Java implementation of cryptographic algorithms and tools, and includes a Java Cryptographic Provider implementation to allow its use through the Java JCA framework and APIs. GNU Crypto includes, in addition to the now standard cryptographic primitives (MD5, SHA-1, AES, etc.), implementations of new and experimental cryptographic primitives and transforms such as Universal Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform (UST), and others. More details on the rationale, and contents of the library can be found on the project's home page at: . Deliverables are available from: GNU Crypto is licensed under the terms of the GNU General Public License, with the "library exception." Java is a registered trademark of Sun Microsystems, Inc. All other trademarks and registered trademarks are the property of their respective owners. ----- cc: prc@privacyrights.org webmasters@gnu.org info-gnu@gnu.org alt.security.announce comp.lang.java.announce comp.lang.java.security From raif@fl.net.au Mon Aug 26 17:04:26 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17jR29-0005J3-00 for classpathx-crypto@gnu.org; Mon, 26 Aug 2002 17:04:25 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17jR27-0005Ie-00 for classpathx-crypto@gnu.org; Mon, 26 Aug 2002 17:04:25 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17jR27-0005IY-00 for classpathx-crypto@gnu.org; Mon, 26 Aug 2002 17:04:23 -0400 Received: from fl.net.au (a5-p21.syd.fl.net.au [202.181.2.21]) by delenn.fl.net.au (Postfix) with ESMTP id C8E8917FCCA for ; Tue, 27 Aug 2002 07:06:04 +1000 (EST) Message-ID: <3D6A9826.6040800@fl.net.au> Date: Tue, 27 Aug 2002 07:05:42 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Subject: [Classpathx-crypto] GNU Crypto release 1.0.0 X-Enigmail-Version: 0.65.1.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hi there, here is a revised version. i added the reference to NESSIE, and clarified that the project is under the aegis of GNU. ----- The GNU Crypto team is proud to anounce the release of the first version of the gnu.crypto library. GNU Crypto, part of the GNU project, released under the aegis of GNU, is a 100% Java implementation of cryptographic algorithms and tools, and includes a Java Cryptographic Provider implementation to allow its use through the Java JCA framework and APIs. GNU Crypto includes, in addition to the now standard cryptographic primitives (MD5, SHA-1, AES, etc.), implementations of new and experimental cryptographic primitives and transforms such as Universal Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform (UST), and others. GNU Crypto also includes implementations of some of the accepted (2nd round) NESSIE (New European Schemes for Signatures, Integrity, and Encryption) project such as Anubis, Khazad, Whirlpool, etc. More details on the rationale, and contents of the library can be found on the project's home page at: . Deliverables are available from: GNU Crypto is licensed under the terms of the GNU General Public License, with the "library exception." (Java is a registered trademark of Sun Microsystems, Inc. All other trademarks and registered trademarks are the property of their respective owners.) ----- cc: prc@privacyrights.org webmasters@gnu.org info-gnu@gnu.org info@cryptonessie.org alt.security.announce comp.lang.java.announce comp.lang.java.security _______________________________________________ Classpathx-crypto mailing list Classpathx-crypto@gnu.org http://mail.gnu.org/mailman/listinfo/classpathx-crypto . From nferrier@tapsellferrier.co.uk Tue Aug 27 03:48:23 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17jb5L-0003AX-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:48:23 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17jb5I-0003AK-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:48:22 -0400 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by monty-python.gnu.org with esmtp (Exim 4.10) id 17jb5I-0003AC-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:48:20 -0400 Received: from [194.74.202.254] (helo=NFERRIER) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17jbIV-0005P3-00; Tue, 27 Aug 2002 09:01:59 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] GNU Crypto release 1.0.0 References: <3D6A9826.6040800@fl.net.au> From: nferrier@tapsellferrier.co.uk Date: 27 Aug 2002 08:43:38 +0100 In-Reply-To: <3D6A9826.6040800@fl.net.au> Message-ID: Lines: 55 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > hi there, > > here is a revised version. i added the reference to NESSIE, and > clarified that the project is under the aegis of GNU. > > ----- > > The GNU Crypto team is proud to anounce the release of the first version > of the gnu.crypto library. > > GNU Crypto, part of the GNU project, released under the aegis of GNU, is > a 100% Java implementation of cryptographic algorithms and > tools, and includes a Java Cryptographic Provider implementation to > allow its use through the Java JCA framework and APIs. > > GNU Crypto includes, in addition to the now standard cryptographic > primitives (MD5, SHA-1, AES, etc.), implementations of new and > experimental cryptographic primitives and transforms such as Universal > Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform > (UST), and others. GNU Crypto also includes implementations of some of > the accepted (2nd round) NESSIE (New European Schemes for Signatures, > Integrity, and Encryption) project such as Anubis, Khazad, Whirlpool, etc. > > More details on the rationale, and contents of the library can be found > on the project's home page at: > . > Deliverables are available from: > > GNU Crypto is licensed under the terms of the GNU General Public > License, with the "library exception." > > > (Java is a registered trademark of Sun Microsystems, Inc. All other > trademarks and registered trademarks are the property of their > respective owners.) > > ----- It's food. I'd prefer if you said "part of the GNU ClasspathX project". I'd also prefer if you waited till we had some text about crypto export. However, the maintainers support forum are usually quite slow to respond... the question is do we put the FSF at risk by offering this for download without the text? I guess one of the things we can do is offer it for download from a European country. However, the CVS is in the states and there's not much we can do about that. Nic From nferrier@tapsellferrier.co.uk Tue Aug 27 03:49:17 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17jb6D-0003Fx-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:49:17 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17jb6B-0003FY-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:49:16 -0400 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by monty-python.gnu.org with esmtp (Exim 4.10) id 17jb6A-0003FI-00 for classpathx-crypto@gnu.org; Tue, 27 Aug 2002 03:49:15 -0400 Received: from [194.74.202.254] (helo=NFERRIER) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17jbJP-0005PI-00; Tue, 27 Aug 2002 09:02:55 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" Subject: Re: [Classpathx-crypto] GNU Crypto release 1.0.0 References: <3D6A9826.6040800@fl.net.au> From: nferrier@tapsellferrier.co.uk Date: 27 Aug 2002 08:44:33 +0100 In-Reply-To: <3D6A9826.6040800@fl.net.au> Message-ID: Lines: 4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: WHen I said "it's food" what I meant to say was: "it's good". Nic From raif@fl.net.au Thu Aug 29 07:59:38 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17kNxZ-0003bA-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 07:59:37 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17kNxX-0003ay-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 07:59:37 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17kNxX-0003au-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 07:59:35 -0400 Received: from fl.net.au (a3-p31.syd.fl.net.au [202.181.1.95]) by delenn.fl.net.au (Postfix) with ESMTP id DA02017FCB8; Thu, 29 Aug 2002 22:01:27 +1000 (EST) Message-ID: <3D6E0CFE.1050609@fl.net.au> Date: Thu, 29 Aug 2002 22:01:02 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" Cc: Werner Koch X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] 1.0.0 release Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello guys, below is, hopefully, the final draft of the announcement. shortly i'll update the main home page to reflect the new download urls. i'd like to take this opportunity to publicly thank Werner Koch, the maintainer of GNU Privacy Guard, for his help in ironing the export-related issue, and for allowing his ftp site to be gnu.crypto's main download site. ----- Subject: [ANN] GNU Crypto 1.0.0 The GNU Crypto team is proud to anounce the release of the first public version of the gnu.crypto library. GNU Crypto, part of the GNU ClasspathX project, released under the aegis of GNU, is a 100% Java implementation of cryptographic algorithms and tools, and includes a Java Cryptographic Provider implementation to allow its use through the Java JCA framework and APIs. GNU Crypto includes, in addition to the now standard cryptographic primitives (MD5, SHA-1, AES, etc.), implementations of new and experimental cryptographic primitives and transforms such as Universal Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform (UST), and others. GNU Crypto also includes implementations of some of the accepted (2nd round) NESSIE (New European Schemes for Signatures, Integrity, and Encryption) project such as Anubis, Khazad, Whirlpool, etc. More details on the rationale, and contents of the library can be found on the project's home page at: . The main download site for the deliverables is: ftp.gnupg.org/gcrypt/gnu-crypto/ GNU Crypto is licensed under the terms of the GNU General Public License, with the "library exception." (Java is a registered trademark of Sun Microsystems, Inc. All other trademarks and registered trademarks are the property of their respective owners.) ----- cc: prc@privacyrights.org webmasters@gnu.org info-gnu@gnu.org info@cryptonessie.org alt.security.announce comp.lang.java.announce comp.lang.java.security cheers; rsn From nferrier@tapsellferrier.co.uk Thu Aug 29 08:05:22 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17kO38-0003rw-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 08:05:22 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17kO36-0003rk-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 08:05:21 -0400 Received: from host217-34-135-17.in-addr.btopenworld.com ([217.34.135.17] helo=tf1.tapsellferrier.co.uk) by monty-python.gnu.org with esmtp (Exim 4.10) id 17kO35-0003rg-00 for classpathx-crypto@gnu.org; Thu, 29 Aug 2002 08:05:20 -0400 Received: from [194.74.202.254] (helo=NFERRIER) by tf1.tapsellferrier.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17kOGY-0007Fw-00; Thu, 29 Aug 2002 13:19:14 +0100 To: "Raif S. Naffah" Cc: "classpathx-crypto@gnu.org" , Werner Koch Subject: Re: [Classpathx-crypto] 1.0.0 release References: <3D6E0CFE.1050609@fl.net.au> From: nferrier@tapsellferrier.co.uk Date: 29 Aug 2002 13:00:48 +0100 In-Reply-To: <3D6E0CFE.1050609@fl.net.au> Message-ID: Lines: 49 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: "Raif S. Naffah" writes: > hello guys, > > below is, hopefully, the final draft of the announcement. shortly i'll > update the main home page to reflect the new download urls. > > i'd like to take this opportunity to publicly thank Werner Koch, the > maintainer of GNU Privacy Guard, for his help in ironing the > export-related issue, and for allowing his ftp site to be gnu.crypto's > main download site. > > ----- > > Subject: [ANN] GNU Crypto 1.0.0 > > The GNU Crypto team is proud to anounce the release of the first public > version of the gnu.crypto library. > > GNU Crypto, part of the GNU ClasspathX project, released under the aegis > of GNU, is a 100% Java implementation of cryptographic algorithms and > tools, and includes a Java Cryptographic Provider implementation to > allow its use through the Java JCA framework and APIs. > > GNU Crypto includes, in addition to the now standard cryptographic > primitives (MD5, SHA-1, AES, etc.), implementations of new and > experimental cryptographic primitives and transforms such as Universal > Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform > (UST), and others. GNU Crypto also includes implementations of some of > the accepted (2nd round) NESSIE (New European Schemes for Signatures, > Integrity, and Encryption) project such as Anubis, Khazad, Whirlpool, etc. > > More details on the rationale, and contents of the library can be found > on the project's home page at: > . The main > download site for the deliverables is: ftp.gnupg.org/gcrypt/gnu-crypto/ > > > GNU Crypto is licensed under the terms of the GNU General Public > License, with the "library exception." > > (Java is a registered trademark of Sun Microsystems, Inc. All other > trademarks and registered trademarks are the property of their > respective owners.) Looks good to me. Nic From raif@fl.net.au Sun Sep 01 04:34:00 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17lQBE-0004Mc-00 for classpathx-crypto@gnu.org; Sun, 01 Sep 2002 04:34:00 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17lQBB-0004MP-00 for classpathx-crypto@gnu.org; Sun, 01 Sep 2002 04:33:59 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17lQBB-0004MI-00; Sun, 01 Sep 2002 04:33:57 -0400 Received: from fl.net.au (a4-p18.syd.fl.net.au [202.181.2.82]) by delenn.fl.net.au (Postfix) with ESMTP id 7847E17FD45; Sun, 1 Sep 2002 18:35:51 +1000 (EST) Message-ID: <3D71D145.30604@fl.net.au> Date: Sun, 01 Sep 2002 18:35:17 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: alt.security.announce,comp.lang.java.announce,comp.lang.java.security,gnu.announce To: "classpathx-crypto@gnu.org" , webmasters@gnu.org, info-gnu@gnu.org, info@cryptonessie.org, prc@privacyrights.org X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] [ANN] GNU Crypto 1.0.0 Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 The GNU Crypto team is proud to announce the release of the first public version of the gnu.crypto library. GNU Crypto, part of the GNU ClasspathX project, released under the aegis of GNU, is a 100% Java implementation of cryptographic algorithms and tools, and includes a Java Cryptographic Provider implementation to allow its use through the Java JCA framework and APIs. GNU Crypto includes, in addition to the now standard cryptographic primitives (MD5, SHA-1, AES, etc.), implementations of new and experimental cryptographic primitives and transforms such as Universal Hash Algorithms (UMAC32, TMMH-16 v1), the Universal Security Transform (UST), and others. GNU Crypto also includes implementations of some of the accepted algorithms from the (2nd round) NESSIE (New European Schemes for Signatures, Integrity, and Encryption) project, such as Anubis, Khazad, Whirlpool, etc. More details on the rationale, and contents of the library can be found on the project's home page at: . The main download site for the deliverables is: . A list of mirros -most of which are synchronised daily- can be found at: . GNU Crypto is licensed under the terms of the GNU General Public License, with the "library exception." (Java is a registered trademark of Sun Microsystems, Inc. All other trademarks and registered trademarks are the property of their respective owners.) cheers; rsn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.1.90 (MingW32) Comment: Que du magnifique iD8DBQE9cdEz+e1AKnsTRiERA35nAJ44DhQeK05bb5NashP2nJMdwd6ccwCbBPga jVsu6SjJ2n3qghh1eTpbscQ= =z6OZ -----END PGP SIGNATURE----- From rsdio@metastatic.org Sun Sep 01 20:55:58 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17lfVW-0001ga-00 for classpathx-crypto@gnu.org; Sun, 01 Sep 2002 20:55:58 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17lfVT-0001f5-00 for classpathx-crypto@gnu.org; Sun, 01 Sep 2002 20:55:57 -0400 Received: from 12-235-115-156.client.attbi.com ([12.235.115.156] helo=blossom) by monty-python.gnu.org with esmtp (Exim 4.10) id 17lfVT-0001ew-00 for classpathx-crypto@gnu.org; Sun, 01 Sep 2002 20:55:55 -0400 Received: from dexter ([192.168.0.2] helo=metastatic.org) by blossom with esmtp (Exim 3.35 #1 (Debian)) id 17lfVO-0005o2-00; Sun, 01 Sep 2002 17:55:50 -0700 Message-ID: <3D72B714.1010108@metastatic.org> Date: Sun, 01 Sep 2002 17:55:48 -0700 From: Casey Marshall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Raif S. Naffah" CC: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [ANN] GNU Crypto 1.0.0 References: <3D71D145.30604@fl.net.au> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: A couple of points about the web-site: 1) The links at the top (most importantly the one that leads to the downloads section--which is at the bottom of the page!) don't lead to their "intended" targets! E.g. the downloads link is: Downloads which just scrolls the "Downloads" text to the top of the window (at least in Mozilla 1). The fix is to just remove (or change) the name="" attributes from the anchors at the top of the page. 2) In the "Reference Documentation" section, there could be links for Serpent and MD4. Similarly in the "Test Vectors" section for Serpent. 3) The cipherSpeed and hashSpeed tables should be qualified with how the programs were run (what JVM, what architecture, &c.). Otherwise it looks good to me; nice work. Raif S. Naffah wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: RIPEMD160 > > The GNU Crypto team is proud to announce the release of the first > public version of the gnu.crypto library. > > GNU Crypto, part of the GNU ClasspathX project, released under > the aegis of GNU, is a 100% Java implementation of cryptographic > algorithms and tools, and includes a Java Cryptographic Provider > implementation to allow its use through the Java JCA framework > and APIs. > > GNU Crypto includes, in addition to the now standard cryptographic > primitives (MD5, SHA-1, AES, etc.), implementations of new and > experimental cryptographic primitives and transforms such as > Universal Hash Algorithms (UMAC32, TMMH-16 v1), the Universal > Security Transform (UST), and others. GNU Crypto also includes > implementations of some of the accepted algorithms from the (2nd > round) NESSIE (New European Schemes for Signatures, Integrity, > and Encryption) project, such as Anubis, Khazad, Whirlpool, etc. > > More details on the rationale, and contents of the library can be > found on the project's home page at: > . The > main download site for the deliverables is: > . A list of mirros -most > of which are synchronised daily- can be found at: > . > > > GNU Crypto is licensed under the terms of the GNU General Public > License, with the "library exception." > > (Java is a registered trademark of Sun Microsystems, Inc. All > other trademarks and registered trademarks are the property of > their respective owners.) > > > cheers; > rsn > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.1.90 (MingW32) > Comment: Que du magnifique > > iD8DBQE9cdEz+e1AKnsTRiERA35nAJ44DhQeK05bb5NashP2nJMdwd6ccwCbBPga > jVsu6SjJ2n3qghh1eTpbscQ= > =z6OZ > -----END PGP SIGNATURE----- > > > > _______________________________________________ > Classpathx-crypto mailing list > Classpathx-crypto@gnu.org > http://mail.gnu.org/mailman/listinfo/classpathx-crypto -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ From raif@fl.net.au Mon Sep 02 06:57:57 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17lou5-0000El-00 for classpathx-crypto@gnu.org; Mon, 02 Sep 2002 06:57:57 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17loty-00007y-00 for classpathx-crypto@gnu.org; Mon, 02 Sep 2002 06:57:56 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17lotx-00005U-00 for classpathx-crypto@gnu.org; Mon, 02 Sep 2002 06:57:49 -0400 Received: from fl.net.au (a3-p01.syd.fl.net.au [202.181.1.65]) by delenn.fl.net.au (Postfix) with ESMTP id 0DEB417FE82; Mon, 2 Sep 2002 20:59:41 +1000 (EST) Message-ID: <3D734459.9080109@fl.net.au> Date: Mon, 02 Sep 2002 20:58:33 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-au, fr-fr, en, en-us MIME-Version: 1.0 To: Casey Marshall Cc: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [ANN] GNU Crypto 1.0.0 References: <3D71D145.30604@fl.net.au> <3D72B714.1010108@metastatic.org> X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: hello Casey, Casey Marshall wrote: > A couple of points about the web-site... done. the updated version will be visible as soon as the page will get synchronised (within the next 24-h). you can alway inspect the CVS copy at cheers; rsn From rsdio@metastatic.org Wed Sep 04 22:22:35 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17mmHy-00060m-00 for classpathx-crypto@gnu.org; Wed, 04 Sep 2002 22:22:34 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17mmHv-00060Z-00 for classpathx-crypto@gnu.org; Wed, 04 Sep 2002 22:22:34 -0400 Received: from 12-235-115-156.client.attbi.com ([12.235.115.156] helo=blossom) by monty-python.gnu.org with esmtp (Exim 4.10) id 17mmHu-00060T-00 for classpathx-crypto@gnu.org; Wed, 04 Sep 2002 22:22:30 -0400 Received: from dexter ([192.168.0.2] helo=metastatic.org) by blossom with esmtp (Exim 3.35 #1 (Debian)) id 17mmHJ-0000vP-00; Wed, 04 Sep 2002 19:21:53 -0700 Message-ID: <3D76BFBF.1040103@metastatic.org> Date: Wed, 04 Sep 2002 19:21:51 -0700 From: Casey Marshall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Raif S. Naffah" CC: Dag Arne Osvik , classpathx-crypto@gnu.org X-Enigmail-Version: 0.63.3.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------050306040501030603000509" Subject: [Classpathx-crypto] [patch] Inlined Serpent Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------050306040501030603000509 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 (I'm CC'ing this to the crypto list, too) Attached is a patch to modify Serpent to use Dag Arne Osvik's inlined versions of the encryption and decryption methods. The key setup is still the same as before. The bad news is that it is NOT always faster than the current implementation. When run on Sun's HotSpot VMs (I've tried 1.3.1_04-b02, 1.4.0-b92, and 1.4.1-rc-b19 on Linux) the JIT will refuse to compile the encrypt and decrypt methods, and all en/decrypting is done in interpreted mode. Thus it is not much faster than interpreted mode (my guess is that Sun is terminally too clever for their own good, and their JIT will not compile methods that are too big or take too long to compile). The good news is that with other VMs this implementation is MUCH faster. Kaffe (version 1.0.6, JIT v3) can get ~5.5 MB/s, and a native version produced by GCJ runs at ~8 MB/s (second fastest for encryption, behind Rijndael, and neck-and-neck with Anubis for decryption). If we can come up with a way to make this inlined version more digestible for certain JITs, I think this would be a good implementation for future releases. - -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org iD8DBQE9dr+/gAuWMgRGsWsRAreRAJ9poU8hDRPjyuhHSB5uJDRMXbb+DACeOePj 88OIle6lNPdlQGehIrsstFI= =Aw5o -----END PGP SIGNATURE----- --------------050306040501030603000509 Content-Type: application/octet-stream; name="serpent-inlined.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="serpent-inlined.bz2" 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 Kf8XckU4UJDO1VH9 --------------050306040501030603000509-- From osvik@ii.uib.no Thu Sep 05 06:34:36 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17mty7-0000RD-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 06:34:35 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17mty5-0000Qd-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 06:34:34 -0400 Received: from eik.ii.uib.no ([129.177.16.3] helo=ii.uib.no) by monty-python.gnu.org with esmtp (Exim 4.10) id 17mtts-00083f-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 06:30:13 -0400 Received: from apal-192.ii.uib.no (apal.ii.uib.no) [129.177.192.27] by ii.uib.no with esmtp (Exim 3.03) id 17mtta-0006vP-00 ; Thu, 05 Sep 2002 12:29:54 +0200 Received: (from osvik@localhost) by apal.ii.uib.no (8.11.6+Sun/8.11.6) id g85ATkw18494; Thu, 5 Sep 2002 12:29:46 +0200 (MEST) Date: Thu, 5 Sep 2002 12:29:45 +0200 (MEST) From: Dag Arne Osvik To: Casey Marshall cc: "Raif S. Naffah" , In-Reply-To: <3D76BFBF.1040103@metastatic.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanner: exiscan *17mtta-0006vP-00*Rv27g8ajgjA* (ii.uib.no) Subject: [Classpathx-crypto] Re: [patch] Inlined Serpent Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Wed, 4 Sep 2002, Casey Marshall wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > (I'm CC'ing this to the crypto list, too) > > Attached is a patch to modify Serpent to use Dag Arne Osvik's inlined > versions of the encryption and decryption methods. The key setup is > still the same as before. > > The bad news is that it is NOT always faster than the current > implementation. When run on Sun's HotSpot VMs (I've tried 1.3.1_04-b02, > 1.4.0-b92, and 1.4.1-rc-b19 on Linux) the JIT will refuse to compile the > encrypt and decrypt methods, and all en/decrypting is done in > interpreted mode. Thus it is not much faster than interpreted mode (my > guess is that Sun is terminally too clever for their own good, and > their JIT will not compile methods that are too big or take too long to > compile). If you split the function in 2 or more chunks of code, their JIT will at some point become able to compile each chunk. > > The good news is that with other VMs this implementation is MUCH faster. > Kaffe (version 1.0.6, JIT v3) can get ~5.5 MB/s, and a native version > produced by GCJ runs at ~8 MB/s (second fastest for encryption, behind > Rijndael, and neck-and-neck with Anubis for decryption). On what kind of processor? I'm a bit curious about what kind of code GCJ produces. Could you mail me the compiled code, or even better, assembly output (-S)? > > If we can come up with a way to make this inlined version more > digestible for certain JITs, I think this would be a good implementation > for future releases. > > - -- > Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.0.7 (GNU/Linux) > Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org > > iD8DBQE9dr+/gAuWMgRGsWsRAreRAJ9poU8hDRPjyuhHSB5uJDRMXbb+DACeOePj > 88OIle6lNPdlQGehIrsstFI= > =Aw5o > -----END PGP SIGNATURE----- > ------------------------------------------------------------------------ Dag Arne Osvik http://www.ii.uib.no/~osvik From raif@fl.net.au Thu Sep 05 07:18:34 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17mueg-0000qQ-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 07:18:34 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17mued-0000q6-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 07:18:33 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17mued-0000lB-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 07:18:31 -0400 Received: from fl.net.au (unknown [202.181.5.35]) by delenn.fl.net.au (Postfix) with ESMTP id 65D4E1800CF; Thu, 5 Sep 2002 21:20:35 +1000 (EST) Message-ID: <3D773DE3.20004@fl.net.au> Date: Thu, 05 Sep 2002 21:20:03 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-au, fr-fr, en, en-us MIME-Version: 1.0 To: Casey Marshall Cc: Dag Arne Osvik , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [patch] Inlined Serpent References: <3D76BFBF.1040103@metastatic.org> X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 hello Casey and Dag, Casey Marshall wrote: | (I'm CC'ing this to the crypto list, too) | | Attached is a patch to modify Serpent to use Dag Arne Osvik's inlined | versions of the encryption and decryption methods. The key setup is | still the same as before. this version: a. is _not_ thread-safe, b. generates a 54K class file (compared to 14K for the current impl.) - --with Sun's javac compiler. c. runs almost 20 times slower than the current one! $ java -version java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24) Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode) $ ant speed ~ ... ~ [java] Exercising serpent... ~ [java] Running 1000000 iterations: ~ [java] Encryption: time = 70.982, speed = 220.12622 KB/s ~ [java] Decryption: time = 69.901, speed = 223.53043 KB/s ~ ... i'm not saying though that it's devoid of any benefits. | ... | The good news is that with other VMs this implementation is MUCH faster. | Kaffe (version 1.0.6, JIT v3) can get ~5.5 MB/s, and a native version | produced by GCJ runs at ~8 MB/s (second fastest for encryption, behind | Rijndael, and neck-and-neck with Anubis for decryption). i see some advantages in keeping the current implementation _and_ adding the new in-lined one as an alternative; say SerpentInLined? (naming suggestions are welcome) i'll start a new thread about discussing this alternative in general; i.e. how can we [re-]write the Factory methods to provide the _optimal_ implementation. i'll also start another thread about collecting and publishing performance figures which, ultimately may allow us to tailor the heuristic for selecting one implementation among many, depending on the host environment. | If we can come up with a way to make this inlined version more | digestible for certain JITs, I think this would be a good implementation | for future releases. pointers to finding out more about JIT nuts and bolts, anybody? cheers; rsn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.1.90 (MingW32) Comment: Que du magnifique iD8DBQE9dz3Y+e1AKnsTRiERA2VCAJ43zbmS7Ys5/jFHGYpxw1FvpEkR3ACeILtG 3OnHVjsNW157F8Rbw8+Feww= =UiS0 -----END PGP SIGNATURE----- From osvik@ii.uib.no Thu Sep 05 16:27:21 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17n3Dl-0005GA-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 16:27:21 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17n3Df-0005Fo-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 16:27:20 -0400 Received: from eik.ii.uib.no ([129.177.16.3] helo=ii.uib.no) by monty-python.gnu.org with esmtp (Exim 4.10) id 17n3Df-0005Fa-00 for classpathx-crypto@gnu.org; Thu, 05 Sep 2002 16:27:15 -0400 Received: from apal-192.ii.uib.no (apal.ii.uib.no) [129.177.192.27] by ii.uib.no with esmtp (Exim 3.03) id 17n3DX-00035I-00 ; Thu, 05 Sep 2002 22:27:07 +0200 Received: (from osvik@localhost) by apal.ii.uib.no (8.11.6+Sun/8.11.6) id g85KR5S24517; Thu, 5 Sep 2002 22:27:05 +0200 (MEST) Date: Thu, 5 Sep 2002 22:27:05 +0200 (MEST) From: Dag Arne Osvik To: "Raif S. Naffah" cc: Casey Marshall , Subject: Re: [Classpathx-crypto] [patch] Inlined Serpent In-Reply-To: <3D773DE3.20004@fl.net.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanner: exiscan *17n3DX-00035I-00*Ck/SwsxszqM* (ii.uib.no) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: On Thu, 5 Sep 2002, Raif S. Naffah wrote: > Casey Marshall wrote: > | (I'm CC'ing this to the crypto list, too) > | > | Attached is a patch to modify Serpent to use Dag Arne Osvik's inlined > | versions of the encryption and decryption methods. The key setup is > | still the same as before. > > this version: > > a. is _not_ thread-safe, Just a misplaced declaration. Move the declaration of x0,...,x4 inside both encrypt() and decrypt(). > b. generates a 54K class file (compared to 14K for the current impl.) > - --with Sun's javac compiler. As expected, and not very good. Still, code size for fully inlined encryption & decryption for x86 is less than 6.3k bytes. Key expansion is 3.7k. Java byte code is probably not as compact as x86 code, but surely there is some overhead we could remove? > c. runs almost 20 times slower than the current one! This can be fixed too, as mentioned in my reply to Casey. We just have to work around compiler limitations. Nothing new here.. > > $ java -version > java version "1.3.1" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24) > Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode) > $ ant speed > ~ ... > ~ [java] Exercising serpent... > ~ [java] Running 1000000 iterations: > ~ [java] Encryption: time = 70.982, speed = 220.12622 KB/s > ~ [java] Decryption: time = 69.901, speed = 223.53043 KB/s > ~ ... yuck.. ;) Regards, Dag Arne From rsdio@metastatic.org Fri Sep 06 20:24:23 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17nTOh-0006Pi-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 20:24:23 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17nTOe-0006PI-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 20:24:22 -0400 Received: from 12-235-115-156.client.attbi.com ([12.235.115.156] helo=blossom) by monty-python.gnu.org with esmtp (Exim 4.10) id 17nTOd-0006PB-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 20:24:19 -0400 Received: from dexter ([192.168.0.2] helo=metastatic.org) by blossom with esmtp (Exim 3.35 #1 (Debian)) id 17nTO5-00026d-00; Fri, 06 Sep 2002 17:23:45 -0700 Message-ID: <3D79470F.4060000@metastatic.org> Date: Fri, 06 Sep 2002 17:23:43 -0700 From: Casey Marshall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Dag Arne Osvik CC: classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] Re: [patch] Inlined Serpent References: X-Enigmail-Version: 0.63.3.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------090606020203080406010500" Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------090606020203080406010500 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dag Arne Osvik wrote: | On Wed, 4 Sep 2002, Casey Marshall wrote: | |>The good news is that with other VMs this implementation is MUCH faster. |>Kaffe (version 1.0.6, JIT v3) can get ~5.5 MB/s, and a native version |>produced by GCJ runs at ~8 MB/s (second fastest for encryption, behind |>Rijndael, and neck-and-neck with Anubis for decryption). | | | On what kind of processor? | AMD Athlon MP 1200. It's a two-processor machine, but only one gets used (since it is running in a single thread). | I'm a bit curious about what kind of code GCJ produces. Could you mail me | the compiled code, or even better, assembly output (-S)? | This code is attached, bzipped. It is the output of the patched version I posted earlier compiled with `-O -S'. Cheers, - -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org iD8DBQE9eUcOgAuWMgRGsWsRAlE2AJ40btPPQQgA3HE4xqFQraDmlDJm7gCfX2KW xF9NN6TegxHPXkWrTamvZxo= =c8hj -----END PGP SIGNATURE----- --------------090606020203080406010500 Content-Type: application/octet-stream; name="Serpent.s.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Serpent.s.bz2" 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 NchyrajkYaNVpSYYxTDHyU6llONIxqaL9p2i2QcnybjGjFHGmEsfYmhjGjFg9FDXzaDHJxOa 05mtqnlzcZ5eXj5dXUmNCNXtfax67vbzypPZFSe+uua1JUSxjiYnjy8Mqbv4jyyk5G8eeXl2 eXh5d43ajMyJtNVQqpIzhKrgAAaAYyGJBZwCglksfYppUli6p9ZccNLBikxLFfPxdTxx+Xbr l13ly7yw96ej2NSy2242sfHxvJ8ej58mqV4suPd8SjUyVOAkal9hRwFhVGSUWUsjksLSxo2K MWyUxRSkwpPgmMcUwsmKh8mOji0U+5o44poa42hpLiVDCxPDjcY1ixSlRS/eTHhTqpUON51K ManBjgyuDVbFsrO/y8vJ5Ojo6dUuvl5bnuG01VaajGpZpjHw+MeB2l9thSoXHAgiAi8nXS1J YnmjbItJtka0lh8lOJ37gtQYw1XYOKjgyXW1U0aJiwb7FGicUxSqfYsaTGJhTFifX3v5D7b5 qqtlqta01XXTNY2uuVd6D2+vvzu9ffy2sSSSSCQSSWM2tN9c3XEkkkkkkkkkkkkkkkkkkkkk kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklWn1rWta1rSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSWtTMyklM61MpTKUylMpTKUylMpTKUylMpTK UylMpTKUylMpTKUylMpTKUylMpTKUylMpTKUylMpTKUyl0w/MjYJBhwBa7hmuRwgFFJrGZKF tRGlGGpNSURaZIa2mpUqlUpVlKisVpNv1yuRRVvm0JwPMR3xk1thbLSWyWktREkoza5Vyg0s qoU22xIY1G00jaxtrfbyvt3en29+T3y/AfdMmLG2NirGtopmTFFUFirFUbWJmTFGsmxVFirR sYz7/nd9vb3WXb8zMWXb+MzFl2/fMxZdsd7xc7zdu91t7i7nd273W3uLud3bvdbe4u53du91 thzi2s1Z0qjDqpi70pi7pCXdmdmcMLswznOLXeMvGMvF3hJ4u8JPMze17pJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJRERjGMTKUylMpTKUylMpTKUyl MpTKUylMpTKUylMpTKUylMpTKUylMpTKUylMpTKUylMpTKUylMpWSm2ZvjGRmYgy1UF1yc5z Odm7r3bmXO95ybuvduZc73nJu6925lzvecm7r3b0Dzqtj0CzXn8P43dAEk0fzCZEypRVW3Eo NbFlMXVu0pJMhTYHbU12y1zBv3wGBLMaIZ2PkEfUF6Pnm/OvPXrKKSSSWEnSSSV0lCSSUpJW SSVkklKCSoAd9IhmNJVERCkFJoopJJM0MLSvx/O/P5XypQAEAswAnqCCzAEOWF7gkgm56666 6666wk6SSSukoSSSlJKySSskkpSShJJK6732Arz+Ieh53mySRwySSSKRSSNv154h6XiEUUU3 b3nbvtzm9XQ3ihaiiicaTjSiGA8Xd6u8tZy1nbU5vdUlrO2s7aXe8l9mcTXehXo3q7YJmSSS KRSSSQySNuT89rf0xgAowmADLbZtaqC/gu4KMJgW0amtQGACjCqpaqa021gYMLCxMGkxWrDT aVLJhU1JjABRUAWJJJnc7zbNla1p3vatayN4ulnLxZf0/w+/G/pLGIi0aIqNi0QmDEGIISAi CCIggghAAAAAIAShIhIQAAAAAAAAIAQAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEA21UU bGAAAAgAAEAAAAAAAAAAAAAIAABAAAAAAAgAAEAAAIAABAAACEgQAAAgAAEAAAIAABIAABAA AAAAAAAAAAACAAAQAAAgAAEAAACNsW1UlsAAAAEAAAgAABAAAIAAAQAACQAACAAAEAAAgAAB AAAJAAAIAAASHdyncAL3cqqn5paqqqoqqqqqpaqqqoqqqqqpaqqqoqqqqqeaqgWqrqhaqgWo pYFqq4WqoFqq5RalKqhSllqqFqqFKWqBTlqqBaquqFqqFqq6iqqBaquFqqBahmBaquKKqoFq q6oWqoFqKqO7u7tCAEACAEACAEAdyOc5znOcmZmZmZmGRZmZmZmZmZmZmYZFmZmGZmZmZnOd 0AAAkAAAkCAA5qr9+AAASAAASBAAdVT7b70dVSr9cf2jhXWqb5N9pkgbFUtlVHq9Xp445+EH u9nX734vj69O/v79zzyHGZAZoAfmR+pFBGvRrLwUAwOCfoey1+hy+8zNAVZpI5uxtz9Pjznh LeXzveM3OsV3HBvb7w83tuXkk2SZOjwWvXuvw1Q8vW23VBL2g8EXve2s7sPBGryZDJ2Qg4Qa at5XYpS2la921Xvbjmg1jvMlroJYsV3njyE8S2lPPGIICw4yg3EjJEYQWpCSQ20FIme7zzyV 1gbznc8uu2qyWLZE+FQsinXQAAHzYFeCqW2wKVhDLVU8YDftOZ2uUkqiIqqqqpJAvFpvjKSV M7w9r5q04zTswVG96xV6VJIF4tN8ZSSoQ5nCtIY3vjHPjMzMzLs3O7318PfO8ke3xLLvutMt kmyCYFhFgSpAB27MCW/QgTlLKvRVxBzmmzlICql5l5nOKJnd3dAG3cu90E8zULw1VANzLsYy piHCcCAMTHBA4C0UBQFtDdRXBLV0KJ5RAATjzGUY4BQRqgUhIknMsVSbkslZmK93hIdlAGAp pNylKAsY7uxzhK3cXOcyqvMy8wc57PLzjnbu9voI3Cc3d8HnJacU72W77u+3O6ic8kk4LXKl UsYvbGVl7LCWRgxFrYvDgNXYJJJJLs3fwBs2omlTVJpUvV14d3o7u3v8PH98TOWH7QABMTOr gi3Uz+oAN/aegpnHXAedE7i0b4Wta75iLR7r3qgXi04ytVlYlEvisSFSlI1Vc5KdZjeGSMbJ OSbn6888vl+wof7Pn8j8weiT6DiNMAzggB2fcb3vrrzxKneqqqqqSQLxab4yklUEGc2m0vYq ABOMqpnCxWc1VJIF4tN8ZSSoljFpvhUsJl7taqrDC+MYxjHq973vfx3xbG9JCz3Bi+c3E/L+ D4OFMAIWm75G7M2qzl5kejZtmZvJ5+fn9Hb7Hu4d9dv80ZxW4IrSVtJYGvs89j2z2HqJPbuk 6SOLszuzMCHZi4YgxIIsALWJdmL4XXnk9+efPXz58/YA36M1YHRxjO+fYM3bdHs9fB8YIkEk EEn3EHwfrKp/tVUV9vsO1YAnohVRp46poqqKsXlpAFpdmLuzO5BdmcPkZS13335Xfnt/fB+3 1i7X8nt9ft9vn5+k/bYH6jzzR0GsjqdtpZRINfTHivDJJYygKzKs3dsigAQQAaBl/B0+LZG2 ats3k49Pq9vHud3fdw6PdxW47uk35aTeeveK8HnlaSyyXr3SXX/TEhJAzdrgC9w7NDwted+e +vmfnr/Z+B+A2MDfbml9+uvOYHoBgNEgkkgg6FhB9alm8bLszhz8CHwzYSCQQbSwlrE2IYuX yM1vc7531XeheRRe8qvwFfg8ZyQQSQQaB5vq/YIsSG8eARAQBBJIFosCIac63beq7fvvr34G WBsdPtLkb1gUBskEEkEGhYaPTtggnzwJo+7FnLCQ9gCI/KzgEFsjK5zq+POvKG7yHAKoCLrM 1W/t4vCOHqp37rqnO2LaC6Y1k2VrLmjJ5pIawRZbSVYWeTtGnt308ewpzRgAUOXV2B+761Qs EkghmgiQa+B9PXt+uhnTWsRwtAZjImAHYsAIZxENIvnvrdX9xr376+zDxm+gLBsjnb5z119O 910SCxBIOhDeeDnsEO7B29wzyJvve99++vPNDxm/A6yCeYGN8r69dbsSCSSQQg/O/YHvts+x RaRMtDGGBHAMVyNcrUee/Xrz6Mwvcb6fGJ5znOb9hgBgkEEEgjYgQe8gem69D24hg8CGuL55 nnXN9Hz362P4wZWM16993d3dz61u848+H3u5+ZaQ2M5+7dz6T46URB0dN7udT7mXszbnVOUd +mK/Ged59M84SeP0OO2lVF3UR1Xau84xe17xhh/Uzc/WCSSSS7AfzjGPoMlhgAAPbfPMdS/r AMQh78isF5ByQPsGAAIBy6x81i4AG9awPmw2bTjQTRZWiIjN71SBUvN508VuziXVWbzulCqs ZfZuTslyTJJ9pJPp+X4uT09/pxq74yLtPLbdvPFqIvBTkdx73gwNAhoPej167AmfertvPPN5 QG+er57Tu+UY1V+SJrFqvW89aI+/pMlTzeui283rzndUxImpDEyqSZLEDMUUBUSoCnQABux1 t8ebzzSDi2SetbvaxHqxyJ+gpaqDB+ADZCqnEyAAxxNknFMsC5VQsSA4MTieY4ukqd6qqqqp IF4tN8ZSVCXYWEB7RbClXGGYZp5spVUqpIF4tN8ZSVQbmrXPN0/Tm95l5mZm6LvEs87n7dvf yuP4D+oR91zvb0k/vEWeB9mAjTswgsxLA2cMWILAsGIoARAIgiiDEKlC3KpifLN4W3o0bVgT a1mGCA/6j7YkgsSQeB/p69ffKG2hmLgj+KzwARYSvOe/Xrnzv55awo5m6pL1JIJLEEoQKO+M Ox540PAhoAkTjW91rs990N3u1AAYxhV2GAEkgsSQTcZrfN9Ah2LjtxDGGEO0Am2K11rXXXNX COPMYVbrvJILEkE0IbkjfYHbiDAIdmkTdVOuu99ULBGL5WPXncT6gAeMAHs4Asfr2iSlXdXS mu65lNi1KWLKVVE1MvZlJ4dk36+z297kvYXFyA8wB7kkgAEkFiSCH6Ed+6nQDMBTQ4AAiG9s 0AANENE5z1nyPXv3zUyEcC+lXldhgBRIIJIINCHI5vsBgCLg5ph3ADtgYVY1rrtd96F7ijth WMPXm+6JBYgkmgeb62OzztohnH1LO2brrrnXPM8873e41T2vg20vet7v6iWxHtatqqv2ePvf y+/7PxjJbsfM9PXvzXVczvrx/NjmZGzNY1utb+t2DMA0XsZ38YC8OE5FbuSO6zWUpWxoWTtq iak3aRe2eu7b09mv6a2xFtVbV+78v2eeqb2zFi7tstbHe+eus+e/Oz78/qkcOKvjfNb17DAC 5IJBBBGhDd+5IHv2ygOYcBxcXxWtKu/T99+bH8By6rTxvny97fW8YczY3m+98kupiDixxOM7 NhMO78d3k8Pzr9evWTvrNXb5wX5L7ve4CmljHePpz7gkkkk3YB2DN8GDpTmMbxPZd/IjGeK1 zHx0KrzLHyuHSOPvy233mb9F0Jy83ncyTncW86+9KBWSdYyR7JySdkjHe9+k3fkfM93ftx73 vlyatGRsm2Jq3j49fDw8vR6e0qd6qqqqpIF4tN8ZSVNF82E2xAhzcAYyqti+cZpVVJAvFpvj KSpha+Mqs5K9LVXvN73ve/l73uReu3zfOYLxjN/hx9vXwcM8781qvWCQSCQWQfrn24xYFunL s7RdVS69ddd9XuKNr3lY7ZgBAJJJBByIcjfG6Pbtli0M5aROLLI3zfENXuFA2AI9jGa83LDA DOQwz5Dj385LhiQC9x7A9JFdZJiX9Xrvb3d3ez2eWI8k9uzdBiT9Y8sfsb8fj9P19/pW/HdO llbTTzPfWPdevnPnU1jMrGO2bAfJ6bpu3Z2ECc5warWJx0LXvi2SB5ocZkK5YDjuzsxbM5fK Gda2lEWfPtdZHTMhAjojpgSC5DmBbONqub4lV7S969/X5/m/k9X29aR8Gp72P4Gvq2yzaekP AWQsj6bzu9nd3s93sDyTebzxEyJ+cn3W7tJHnwgO0uiIAEkDFTrzeqHnlRare2ziIohta178 ZqD72/bd9s7AhyAIF9b1qq3zvvU31e93rNaGx2zIVruWLN55DOAxDmBfOtaVb66QiIdK672O 2ahA41z2e8MocAktcYU0tHrnS5Kj5+nrMzMzM/Ldte73N6t9+aUtU3D789p1KDrXedvBxjl5 7+ZqS83er8r88vPXHnmXO4eJYPM3kCi0xdTF+pl9/UEkkkn9f62B/mAb+xmZmAH1H35jfXNB mHzqFZgzMHi1gB9PLV7q4A/Ios7MFi1ar8oR6Hg9W/ybb3vOc+wKcvN515pprudJ7b01y4s6 dzvLUQAoAd73J2SckntQAHP0FCgPVv2fn9Pez2t2nraFu1zU3b5uawdeslW+WHjvL5UOoeFJ fxJp6cYUspZajyx4lRqnnruJtiSPUWDzR1kj5sh4WePO6eqJiy2K14ENNqJIFwxIyQOGRglq KRgoSKG92sgu3c6vHnXvLmpJ+X52+/QnqfaRhtmYMzo/oE4/PB1GoJDgDEzeYaQQSXIN3q3e fF6pKneqqqqqSBeLTfGUlTvEQ9pvmr5lKLJXWFVJAvFpvjKSp1GXeCZv8yr3vN73uL29YvfS zn7u/4175nL12Dn2GJDDAaoA+EMHLNxqWYrjpPTkdYspperjl16t1dXUTSPV8vngmB+B934/ n+vU0/T588nTyd0zX5zPO+/LYERZ7499M2A+TxgBobbZfjt6gD+ItgLe9VzvvM5FpMvnLbHb NgUupYltsxYznOMLWrY92tOfaHWx0zUI0bN10wLs7QJwqzXXOLVWtlfH5/H3jX7WHxHnZ+n5 h1Jdj1CeJFmsGg3mvrdvZ6E8keXrwlST80n3e/lm8YsWBci2ubWvK67XuwhTCFHvWvXjNsON +eeM4JYO7WErW973HnXnmp1a01OqrQ2PGbQ5mzdsSB24Du7TidaqNVvrqbULWmq5qvPOh4zb EddOmHmGdi2XFhjW+brmVvvvfM8fGsY5rg+vYbhYD0/zPzr9O+g0pShShZsb2SPCK72yHJPT tfZ6ekjyJsJok/Qfsfn+nkkOAzAAuQ9PBE75vvVevXpd2FsSq9+MyD7PG8Awe4ZwzWF5zjrn N8V+/p71ur39FajkyTCss4ztSIs+bh06xh85tOJc2mU8pP+T3vMZzKoX6rXt768BXnl5r4R1 OPd+PX5gkkkk/iq/Az9fwKpfXV/HQ2DnouL7G775PPejRzRe3nt8+PdyHf3j7Te6+lhGX+oD AfbFQzWpZkaFB8mftDvdLPg6mpebzo5dtHoxc1ZzOHvSw1wcHEudknJJzbu7+/x9/xWfA6GH 0fgCjVEgGoDVBAUkAHABd4qt8767Sp3qqqqqkgXi03xlJUXi6tfFlEPlVUZes5WVVJAvFpvj KSol4wqvJM4z6q973m973vfy4uLrAeXxjFpE/h0M65qFscZsDOfz/V6ZwA7s7QWDsWnOce9Z 3vPj2tOFVedM2g9zy7Dp2dhRZxBcAgEEA2F8rWr0Otcq1aU3Va6R89EAR7cAAggAkB48jd7E vEs9vQsCzdDy/pZZwAW1yGEkgiZZ2xeud5qvPLWXQmTjGe69eM1B97fpumpx54zgUQIhswGk 4C3vVZ4u+6xVrXv0Neb34zUNdfoQwHhsqz5Wq5zvvTva2tDK154zaD8PTM1yP4FoE4Va4t67 673bcZlavo81vht8IBe3y0AwJ9kuX9gDsSmDXu8ENZ60udq+fXfltZzaa0a9dMyD0djBDAOL RjF973vdVIiZxVbZsitgASQImLiaSq2bRacJDWmZB9ae7MOFgHE4zitLOt1jm+7amZmZmfp1 eMXvtwepMRxYsvPj17YNHxiaPNGW/JPHrsXE5qz74L0lpZsROJCi2M0nLp3V7WnqZca/cOfk CSSST/hZmH7AB+hYBm+1Fg3Xrduuo5YO+PkeYw+ALYf2GYGiB8lhovi18hZn5ERGb4SBdWl7 4ykDeL3ud50Zx8hnOaaqjZPdK3kkuSVz+Lk+v1QZPifiPhvIBJyYnzd42MgLk2l9PveWsao1 fG+NajbXyVb4+NchbHlJrvNJ1SdZrAaiTWRtrefGrxtb72rlszfT5769trqZpIMqJttKCJIF pGOUm4SyyJGSYJM6dwQC93c9k2vSm29ekJDu+YG5YAXNg93ZhciPyEzM2OpxjeOLpKneqqqq qSBeLTfGUlRDWu83jGVdQqNrKqqlVJAvEvN53vfCkZ4oDczfpmZmXm5mpe/M89t2/PtJ91G1 0DrXNY5zuPwDYjq0uXiws58AHB1b7sGwWa0VruMc77tk3tZ1lHr1xmoPRwA1EAOLXzbON0tV W4sZpd74zIRxmFj0QBa+L351W9ruIstaF9a76ZtBxgDrgZoaypVzm9V11rGIvrVa1/RDjq3r oH83gzMF4uCfQA7HlmDDd+ZLIjHKx1nGKrzyNXtbOqGr8Zsiq0w4RinYNdVNZWd7soi1VVba uDuAWaAJocIj3ZnO81J6J2q2q9UCDRqg5u846azM348+fcH5R+cSsOCFT4qvKFM0MIVajrro km2r3pmIDCIfE4xdfI55M81IPJky5mcXQr5u9zlTEF08uHOLUovm2ai6mZTzf7XG9j75wcvM vwJy83zoKiW5+Soe32BJJJJ/1hA/nD+FEsWP3xJBvZX8N2/s9646eednG236KqGcuXEsF8vr z0a8/X6Pb2dm6+zn3edLf3b1IRfahQ9fbwPPuTwDKvH6bbzec9gU5ed53jSEmKhLhObvSe9u qpQDo7dlvuSTZJoqgALkjz7/f5nyDv6VVEUCAaIJoVRABDMCACGYgEABOrLrnXOkqd6qqqqp IF4tN8ZSVG03V5yrRa1oyqeL2qqSqkgXi03xzve+QuXnk03ufS7u7u7u7+Uj5nM34PGjvJtn 7oa5ic8ZtfgBqIAm95zlQZNrRu9M2EAwnGZm8cFvPf1vB+H7E/igbDRS+uEsr4AHv8Cq0htX jGr850HfOMZpmoMMEEgkEgkXvN1fKDviks0zYsCQSABN3m6vlB3zm6Zk6dgSGa2czhKZfG8+ 0N86uCQQeS5MyTYQT0AOTTYLBru4cisPet75YxGJZmxpmwkCQSABe9r5z2FvN0VQAHareO7m 7wJS/Xar0IKA6aqgAJnELKpayvUzMzNp9S8X9456vc3c4i/WsbTTOOZOPZ3RvTMsue5cqUR+ XUeel6HrV3bz0Vt+LIRi0PdPE9TL5/AHPqCSSSS7AfYAfkzBgzEM2WYszuM/XRgjeZnnk6AA E+kmMR/GB8jFY9ZeDObeU/s5f5VWBINo6iIilnPQLxab4BebI86952xusM8t3ure9ySdkkHa FVQwgUCaR29fv6JCd+5ISnnz51vfDQ3edPyeZ55uvkTzaPXJym8u9XvB1k6KamkVNb0rfTQ0 lJVRrHzquLJJLZbEpUh4duk8pkCuxNLIeF0L60hxU6kskJcXFstPON2kr1W6RHrtJaK4s0kj aXZODppOaHfwcayya6Krh252WRPEpRHe/qREPf29Injd7Zs7t3YmVCm42jIA1EkjYl2HVJt1 QtTKoIs1iTxF9uc9vby31567ufuaJMyj6cOGtM1p29OF3HfVXTu3yj2ZOznx469GpmAHZmLF gePvHeOl3SVO9VVVVUkC8Wm+MpKsJ7XyprNzRpPaFKqqpIF4tN8ZSVGJxE2vPuZmZnV5ub3+ Z1jH5P945OaqfXy1vlMS5guLCIux8AHb+qvnXnA84rGKZvwwAte0rCQJvi+E1c6Bl5l84u/a hVScm88queAUHnJnOPLmb5VMABjLl+mB7s6mOyXgWEO+wBtAeyABnSicc50AANMwiM6Zstss AIV75YMMq1sYTNaB2WA2WAnD1fNMGBc3TNcBg9rzF7RE9JDsgFfA94Un8EyFe4A9+gWRQJFe eo/ZENzm1WQAYIFFy5BIJE3mM5v6zr49TQzF/XsXwTM2xuryfXed7qyd5nMvib25g3mdP3xH zPPHfnPht1qkgXxdZyKh7Wta9/ofwIYf4iG/NmH7gQP1Fh9rc8Xuwd7fLW7d5fodyD6hPYIk TOfVrWtbGfaJiFmc4zk5uc3eZ1ZzvM6epc2+sS8lyTZJw3n1+n6d919D2ttKWSko/a0wpTXd jG1ve0qd6qqqqpIF4tN8ZSVG2Mq9qvCiM2VRa1sYvVVSQLxab4ykqwXi18ZWMYws9TMzM3d3 fukO4MtLMy7+2fb27s76qs59wbQRBIqseXzhOZu7yquq+hoBkDLx8vvU1vwKreYF7+L8gRNi 4NoMiDsAbDCC0FmSzU33sWxnF0zRQRqqkb3dH0CW3vKrWBQkbzH7Bv1sHe1WzgAFkBcczeM2 d3Kqvx5339/iA/p8sWMwGUbdgDrY5w8i3UWc9oYLCQzAAZZssAzAaib373oJuVvao+pHu6OJ XnnOdqnQoXfOTN7304l6mZmZn1e1394vadb+Ezku98YxPexZYwVzOaBm5wNldR2Hb3zfNz8p zyZzmcvAc8vzo2Z3vNIXbt/HkvNkv0x9xVAQf4Pzqu7gXPXvJJHDJJJIpFJI26ckkkjhkkkk UikkbsZapBfBDGPO3OTkkv29/jsk6ced7zicO9PM5zs5zvTfBzkStRczdkmQdfd7D2+q95vO ZJ29Q5IPAL7ebxbjuTMK75nkF2yc7wzImDdXzd8pZRSSdJLASfCSSV0s5znOSr2zmyzdPjKW AUoSSSnCTqySSslCSvhJ8QkkldJOlhJ0sJIxEJJ0lnGUHwkkklEWV95kq8s53YxxPBkb3e9e dSmK6d3gLkmZ3kF2953ujvM6enJk3Ozd6j3vc7zNfM7rJ1Ld5iV3fUru+yQ7zN5M48HQtll5 m3zvec5zMzm29OyLve97BJualhzMKKG3JDIbwcvedvSO6sJ43h2Tc3mXu33NS475zozs0uWX LTy74MXe3ljvBl6aPeb2LrV41x27cyFfN0LKwk5N7oZSykrrGMYtjDpJQkrq/Lk1tpK7kkkJ kknW2TdySSZvedk62ybuSSThbEV5d4O6Nmt44plxS+bfeG+ng7vV3hfL7jV3183nL3vMGdMz i4pfAuPnVuPuY+b3m8d8508V6cHE5zm87x29xd6Zryc3q6uaMHCeWebzvdjyY+ZO5nOnqvOI 8nCc53vZsyY+Y8vO5fOniN7iPM73ne3cyZM7vJ3l690d/wih/A1R6apUfaTfOOGSSSRwyS1r Ws9rWtuNX3feNrKKSSSWEnSSSX8OvCf2uPqZ8BV4fE/IPlBf0R/uX5o7v8v6EH71P69gV7cH r9vx+fZeK/ep8xeg8D873+9jocY8nxfd/Txp7gJ930bf9LpL/xn1l409r+T8XxvkAvo4m/BP oXtp/d4d3n8/+f8vsdH5vdzd+569nZdmP+WGyWiv9AycqXNo/7D+3HP5hi+KZhoi9Do4v1ml cad3e8PO/+en7JIEEgGiCQDRBIBogkA0ii6dSKZFMimRTIpISKZtZLbEWqfqdWASAWIJAMTM jOBSqdfoOuwSCCCQf8rh+wLoB6P4V87hX2L7V7ns6fj497+fmv01dOA7Om4CzLgrccG5grYL lD3/vf38/h/P/P+/+PMzMzN0aNGjRo0aN3d3d3d3d3d0aNGjRo0aN3d3d3d3d3d0aNGjRo0a P5d+B7BkssP+uR/ciNA+9gsCXE1eG4g6bptW7LtsyJ2bidpkyw/5vr96P9YCv3AAAD9UQTQY MGDEGDBgwYIwYMGDEGDBgwYIwYMGDEGAxttrcAfjAniPwn6I8X1/6/wXX7v6/dxy/3+z+Gas pGrSZbZTLbKatRq1GW2Uy1R2HoN6Ds7W8O/1FunsF+fIHzT+WP0/XX5+m+3j6SD0ovdwN3Dm r1r4dPvj0XPdVFR5rIf6l7hxBe32f7vd48ej9gw+r0/aSr+c0GmZqfOrawbHd+SvNdH7e99I 9sfu/Ev+18ye66cB+mPlf+/WR/0C9fun3K6D/bw6+E/Z7XZdpS2/lXzX9HXMYxgxjGMaMYxg xjGMaMYxgxbW1vaX+LHrta1tfjg1xxOKvH8VVLg6cF5/t/JmZmbbbbzPrb9D64+gvSvNGXP7 lm2/+x6YvXi7C/ivY5gj8L+5f5F+r5aufyF2UE+T83O43H0cc/t/Y+5/lHkv9Efy6Gm5/gTj qtlsE/1epJ648q5/J/JQB/r2q9q36632t9mKMYosYxksYtRjGMYxksYxjGMYxSWKKMYxijGT YxjGMYxjJYxjGMZMYxbfyL+Re93l7u3d2naNXVIloybWTaybWTaybWTaybWTayannqkeq6rv jTevJtZNrJtZNrJtZNrJtZNSPWjJtGTaMm0ZNoybWTaz21k1Hkz7121k2s9vXdyvD3Kue1dJ +c78J1/V3AfgO/b3Af6/K/r/j+4/46KGK3XG5bcZxxx8anrp43p/t9mqlPOl1lX0vq/gp3In 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 --------------090606020203080406010500-- From rsdio@metastatic.org Fri Sep 06 21:06:47 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17nU3j-0001Bg-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 21:06:47 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17nU3c-0001BT-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 21:06:46 -0400 Received: from 12-235-115-156.client.attbi.com ([12.235.115.156] helo=blossom) by monty-python.gnu.org with esmtp (Exim 4.10) id 17nU3b-0001BP-00 for classpathx-crypto@gnu.org; Fri, 06 Sep 2002 21:06:39 -0400 Received: from dexter ([192.168.0.2] helo=metastatic.org) by blossom with esmtp (Exim 3.35 #1 (Debian)) id 17nU2w-00027z-00; Fri, 06 Sep 2002 18:05:58 -0700 Message-ID: <3D7950F4.7090901@metastatic.org> Date: Fri, 06 Sep 2002 18:05:56 -0700 From: Casey Marshall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Raif S. Naffah" CC: Dag Arne Osvik , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [patch] Inlined Serpent References: <3D76BFBF.1040103@metastatic.org> <3D773DE3.20004@fl.net.au> X-Enigmail-Version: 0.63.3.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------030803070808080300040402" Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------030803070808080300040402 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Raif S. Naffah wrote: | hello Casey and Dag, | | Casey Marshall wrote: | | (I'm CC'ing this to the crypto list, too) | | | | Attached is a patch to modify Serpent to use Dag Arne Osvik's inlined | | versions of the encryption and decryption methods. The key setup is | | still the same as before. | | this version: | | a. is _not_ thread-safe, The attached version should be; it still declares the five register variables (x0..x4) as global for the class, but declares the encrypt and decrypt methods to be explicitly synchronized. This doesn't appear to affect speed, unless you're encrypting and decrypting in parallel. | b. generates a 54K class file (compared to 14K for the current impl.) | --with Sun's javac compiler. Bigger classes will always result from such extensive unrolling; this version does a bit better (each S-Box is in its own method, and I removed the static sboxI* and transform methods, since they're no longer needed). Once this version has an inlined key setup the static methods can disappear completely. | c. runs almost 20 times slower than the current one! | Because of the JIT. Sun's HotSpot can handle this one better. I was aiming for the following with this version: 1) Keep constant array indices. 2) Keep methods short, so the JIT can handle them. 3) Don't repeat too much code (e.g. there is a one function per S-Box). The results are a good compromise: ~ Sun 1.4.0 GCJ (native) Kaffe 1.0.6 encrypt 4584.8003 KB/s 6262.5254 KB/s 4283.1689 KB/s decrypt 4861.5435 KB/s 6230.0640 KB/s 4662.7871 KB/s (all on an AMD MP 1200). Much better for Sun's VM, a little slower for GCJ and Kaffe, and better than the current version. By the way with this version GNU's Serpent will be faster than BouncyCastle's. | i see some advantages in keeping the current implementation _and_ adding | the new in-lined one as an alternative; say SerpentInLined? (naming | suggestions are welcome) | I wonder if a naming scheme following "SerpentSBoxImpl" or something similar is more appropriate, since what we're talking about here is a particular implementation of "bit-sliced" S-Boxes. | | i'll start a new thread about discussing this alternative in general; | i.e. how can we [re-]write the Factory methods to provide the _optimal_ | implementation. | | i'll also start another thread about collecting and publishing | performance figures which, ultimately may allow us to tailor the | heuristic for selecting one implementation among many, depending on the | host environment. | | | | If we can come up with a way to make this inlined version more | | digestible for certain JITs, I think this would be a good implementation | | for future releases. | | pointers to finding out more about JIT nuts and bolts, anybody? | There's this: which says that HotSpot JITs can take the option -Xmaxjitcodesize. Generated code size is obviously not the problem, since trying the fully inlined version with outrageously huge compiled code sizes results in equivalent performance. I can't find anything relating to time spent in the compiler. Sun has published some books on their JITs, none of which I've seen, though. Cheers, - -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org iD8DBQE9eVD0gAuWMgRGsWsRAvxyAJ9TgIz0bAJSVyfK/vbJlv2DByfgzgCffhAQ UlJLYpmYWhvLjRnX4FrKPMw= =hgJf -----END PGP SIGNATURE----- --------------030803070808080300040402 Content-Type: text/plain; name="Serpent.java" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="Serpent.java" package gnu.crypto.cipher; // ---------------------------------------------------------------------------- // $Id: classpathx-crypto.mbox,v 1.1 2002/10/27 09:40:41 raif Exp $ // // Copyright (C) 2002, Free Software Foundation, Inc. // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License or (at your option) any // later version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details. // // You should have received a copy of the GNU General Public License along with // this program; see the file COPYING. If not, write to the // // Free Software Foundation Inc., // 59 Temple Place - Suite 330, // Boston, MA 02111-1307 // USA // // As a special exception, if you link this library with other files to produce // an executable, this library does not by itself cause the resulting // executable to be covered by the GNU General Public License. This exception // does not however invalidate any other reasons why the executable file might // be covered by the GNU General Public License. // ---------------------------------------------------------------------------- import gnu.crypto.Registry; import gnu.crypto.util.Util; import java.security.InvalidKeyException; import java.util.Collections; import java.util.Iterator; /** *

    Serpent is a 32-round substitution-permutation network block cipher, * operating on 128-bit blocks and accepting keys of 128, 192, and 256 bits in * length. At each round the plaintext is XORed with a 128 bit portion of the * session key -- a 4224 bit key computed from the input key -- then one of * eight S-boxes are applied, and finally a simple linear transformation is * done. Decryption does the exact same thing in reverse order, and using the * eight inverses of the S-boxes.

    * *

    Serpent was designed by Ross Anderson, Eli Biham, and Lars Knudsen as a * proposed cipher for the Advanced Encryption Standard.

    * *

    Serpent can be sped up greatly by replacing S-box substitution with a * sequence of binary operations, and the optimal implementation depends * upon finding the fastest sequence of binary operations that reproduce this * substitution. This implementation uses the S-boxes discovered by * Dag Arne Osvik, which are * optimized for the Pentium family of processors.

    * *

    References:

    * *
      *
    1. Serpent: A * Candidate Block Cipher for the Advanced Encryption Standard.
    2. *
    * * @version $Revision: 1.1 $ */ public class Serpent extends BaseCipher { // Constants and variables // ------------------------------------------------------------------------- private static final String NAME = "serpent"; private static final int DEFAULT_KEY_SIZE = 16; private static final int DEFAULT_BLOCK_SIZE = 16; private static final int ROUNDS = 32; /** The fractional part of the golden ratio, (sqrt(5)+1)/2. */ private static final int PHI = 0x9e3779b9; /** * KAT vector (from ecb_vk): * I=9 * KEY=008000000000000000000000000000000000000000000000 * CT=5587B5BCB9EE5A28BA2BACC418005240 */ private static final byte[] KAT_KEY = Util.toBytesFromString("008000000000000000000000000000000000000000000000"); private static final byte[] KAT_CT = Util.toBytesFromString("5587B5BCB9EE5A28BA2BACC418005240"); /** caches the result of the correctness test, once executed. */ private static Boolean valid; private int x0, x1, x2, x3, x4; // Constructor(s) // ------------------------------------------------------------------------- /** Trivial zero-argument constructor. */ public Serpent() { super(Registry.SERPENT_CIPHER, DEFAULT_BLOCK_SIZE, DEFAULT_KEY_SIZE); } // Class methods // ------------------------------------------------------------------------- // Bit-flip madness methods // // The following S-Box functions were developed by Dag Arne Osvik, and are // described in his paper, "Speeding up Serpent". They are optimized to // perform on the Pentium chips, but work well here too. // // The methods below are Copyright (C) 2000 Dag Arne Osvik. /** S-Box 0. */ private static final void sbox0(int r0, int r1, int r2, int r3, int[] w, int off) { int r4 = r1 ^ r2; r3 ^= r0; r1 = r1 & r3 ^ r0; r0 = (r0 | r3) ^ r4; r4 ^= r3; r3 ^= r2; r2 = (r2 | r1) ^ r4; r4 = ~r4 | r1; r1 ^= r3 ^ r4; r3 |= r0; w[off] = r1 ^ r3; w[off + 1] = r4 ^ r3; w[off + 2] = r2; w[off + 3] = r0; } /** S-Box 1. */ private static final void sbox1(int r0, int r1, int r2, int r3, int[] w, int off) { r0 = ~r0; int r4 = r0; r2 = ~r2; r0 &= r1; r2 ^= r0; r0 |= r3; r3 ^= r2; r1 ^= r0; r0 ^= r4; r4 |= r1; r1 ^= r3; r2 = (r2 | r0) & r4; r0 ^= r1; w[off] = r2; w[off + 1] = r0 & r2 ^ r4; w[off + 2] = r3; w[off + 3] = r1 & r2 ^ r0; } /** S-Box 2. */ private static final void sbox2(int r0, int r1, int r2, int r3, int[] w, int off) { int r4 = r0; r0 = r0 & r2 ^ r3; r2 = r2 ^ r1 ^ r0; r3 = (r3 | r4) ^ r1; r4 ^= r2; r1 = r3; r3 = (r3 | r4) ^ r0; r0 &= r1; r4 ^= r0; w[off] = r2; w[off + 1] = r3; w[off + 2] = r1 ^ r3 ^ r4; w[off + 3] = ~r4; } /** S-Box 3. */ private static final void sbox3(int r0, int r1, int r2, int r3, int[] w, int off) { int r4 = r0; r0 |= r3; r3 ^= r1; r1 &= r4; r4 = r4 ^ r2 | r1; r2 ^= r3; r3 = r3 & r0 ^ r4; r0 ^= r1; r4 = r4 & r0 ^ r2; r1 = (r1 ^ r3 | r0) ^ r2; r0 ^= r3; w[off] = (r1 | r3) ^ r0; w[off + 1] = r1; w[off + 2] = r3; w[off + 3] = r4; } /** S-Box 4. */ private static final void sbox4(int r0, int r1, int r2, int r3, int[] w, int off) { r1 ^= r3; int r4 = r1; r3 = ~r3; r2 ^= r3; r3 ^= r0; r1 = r1 & r3 ^ r2; r4 ^= r3; r0 ^= r4; r2 = r2 & r4 ^ r0; r0 &= r1; r3 ^= r0; r4 = (r4 | r1) ^ r0; w[off] = r1; w[off + 1] = r4 ^ (r2 & r3); w[off + 2] = ~((r0 | r3) ^ r2); w[off + 3] = r3; } /** S-Box 5. */ private static final void sbox5(int r0, int r1, int r2, int r3, int[] w, int off) { r0 ^= r1; r1 ^= r3; int r4 = r1; r3 = ~r3; r1 &= r0; r2 ^= r3; r1 ^= r2; r2 |= r4; r4 ^= r3; r3 = r3 & r1 ^ r0; r4 = r4 ^ r1 ^ r2; w[off] = r1; w[off + 1] = r3; w[off + 2] = r0 & r3 ^ r4; w[off + 3] = ~(r2 ^ r0) ^ (r4 | r3); } /** S-Box 6. */ private static final void sbox6(int r0, int r1, int r2, int r3, int[] w, int off) { int r4 = r3; r2 = ~r2; r3 = r3 & r0 ^ r2; r0 ^= r4; r2 = (r2 | r4) ^ r0; r1 ^= r3; r0 |= r1; r2 ^= r1; r4 ^= r0; r0 = (r0 | r3) ^ r2; r4 = r4 ^ r3 ^ r0; w[off] = r0; w[off + 1] = r1; w[off + 2] = r4; w[off + 3] = r2 & r4 ^ ~r3; } /** S-Box 7. */ private static final void sbox7(int r0, int r1, int r2, int r3, int[] w, int off) { int r4 = r1; r1 = (r1 | r2) ^ r3; r4 ^= r2; r2 ^= r1; r3 = (r3 | r4) & r0; r4 ^= r2; r3 ^= r1; r1 = (r1 | r4) ^ r0; r0 = (r0 | r4) ^ r2; r1 ^= r4; r2 ^= r1; w[off] = r4 ^ (~r2 | r0); w[off + 1] = r3; w[off + 2] = r1 & r0 ^ r4; w[off + 3] = r0; } // Instance methods // ------------------------------------------------------------------------- // java.lang.Cloneable interface implementation ---------------------------- public Object clone() { return new Serpent(); } // IBlockCipherSpi interface implementation -------------------------------- public Iterator blockSizes() { return Collections.singleton(new Integer(DEFAULT_BLOCK_SIZE)).iterator(); } public Iterator keySizes() { return new Iterator() { int i = 0; // Support 128, 192, and 256 bit keys. Integer[] keySizes = { new Integer(16), new Integer(24), new Integer(32) }; public boolean hasNext() { return i < keySizes.length; } public Object next() { if (hasNext()) { return keySizes[i++]; } return null; } public void remove() { throw new UnsupportedOperationException(); } }; } public Object makeKey(byte[] key, int blockSize) throws InvalidKeyException { // Not strictly true, but here to conform with the AES proposal. // This restriction can be removed if deemed necessary. if (key.length != 16 && key.length != 24 && key.length != 32) { throw new InvalidKeyException("Key length is not 16, 24, or 32 bytes"); } // Here w is our "pre-key". int[] w = new int[4 * (ROUNDS + 1)]; int i, j; for (i = 0, j = key.length - 4; i < 8 && j >= 0; i++) { w[i] = (key[j] & 0xff) << 24 | (key[j + 1] & 0xff) << 16 | (key[j + 2] & 0xff) << 8 | (key[j + 3] & 0xff); j -= 4; } // Pad key if < 256 bits. if (i != 8) { w[i] = 1; } // Transform using w_i-8 ... w_i-1 for (i = 8; i < 16; i++) { int t = w[i - 8] ^ w[i - 5] ^ w[i - 3] ^ w[i - 1] ^ PHI ^ (i - 8); w[i] = t << 11 | t >>> 21; } // Translate by 8. for (i = 0; i < 8; i++) { w[i] = w[i + 8]; } // Transform the rest of the key. for (i = 8; i < w.length; i++) { int t = w[i - 8] ^ w[i - 5] ^ w[i - 3] ^ w[i - 1] ^ PHI ^ i; w[i] = t << 11 | t >>> 21; } // After these s-boxes the pre-key (w, above) will become the // session key (w, below). sbox3(w[0], w[1], w[2], w[3], w, 0); sbox2(w[4], w[5], w[6], w[7], w, 4); sbox1(w[8], w[9], w[10], w[11], w, 8); sbox0(w[12], w[13], w[14], w[15], w, 12); sbox7(w[16], w[17], w[18], w[19], w, 16); sbox6(w[20], w[21], w[22], w[23], w, 20); sbox5(w[24], w[25], w[26], w[27], w, 24); sbox4(w[28], w[29], w[30], w[31], w, 28); sbox3(w[32], w[33], w[34], w[35], w, 32); sbox2(w[36], w[37], w[38], w[39], w, 36); sbox1(w[40], w[41], w[42], w[43], w, 40); sbox0(w[44], w[45], w[46], w[47], w, 44); sbox7(w[48], w[49], w[50], w[51], w, 48); sbox6(w[52], w[53], w[54], w[55], w, 52); sbox5(w[56], w[57], w[58], w[59], w, 56); sbox4(w[60], w[61], w[62], w[63], w, 60); sbox3(w[64], w[65], w[66], w[67], w, 64); sbox2(w[68], w[69], w[70], w[71], w, 68); sbox1(w[72], w[73], w[74], w[75], w, 72); sbox0(w[76], w[77], w[78], w[79], w, 76); sbox7(w[80], w[81], w[82], w[83], w, 80); sbox6(w[84], w[85], w[86], w[87], w, 84); sbox5(w[88], w[89], w[90], w[91], w, 88); sbox4(w[92], w[93], w[94], w[95], w, 92); sbox3(w[96], w[97], w[98], w[99], w, 96); sbox2(w[100], w[101], w[102], w[103], w, 100); sbox1(w[104], w[105], w[106], w[107], w, 104); sbox0(w[108], w[109], w[110], w[111], w, 108); sbox7(w[112], w[113], w[114], w[115], w, 112); sbox6(w[116], w[117], w[118], w[119], w, 116); sbox5(w[120], w[121], w[122], w[123], w, 120); sbox4(w[124], w[125], w[126], w[127], w, 124); sbox3(w[128], w[129], w[130], w[131], w, 128); return w; } public synchronized void encrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) { final int[] key = (int[]) K; //int x0, x1, x2, x3, x4; x3 = (in[i ] & 0xff) << 24 | (in[i+ 1] & 0xff) << 16 | (in[i+ 2] & 0xff) << 8 | (in[i+ 3] & 0xff); x2 = (in[i+ 4] & 0xff) << 24 | (in[i+ 5] & 0xff) << 16 | (in[i+ 6] & 0xff) << 8 | (in[i+ 7] & 0xff); x1 = (in[i+ 8] & 0xff) << 24 | (in[i+ 9] & 0xff) << 16 | (in[i+10] & 0xff) << 8 | (in[i+11] & 0xff); x0 = (in[i+12] & 0xff) << 24 | (in[i+13] & 0xff) << 16 | (in[i+14] & 0xff) << 8 | (in[i+15] & 0xff); x0 ^= key[ 0]; x1 ^= key[ 1]; x2 ^= key[ 2]; x3 ^= key[ 3]; sbox0(); x1 ^= key[ 4]; x4 ^= key[ 5]; x2 ^= key[ 6]; x0 ^= key[ 7]; sbox1(); x0 ^= key[ 8]; x4 ^= key[ 9]; x2 ^= key[ 10]; x1 ^= key[ 11]; sbox2(); x2 ^= key[ 12]; x1 ^= key[ 13]; x4 ^= key[ 14]; x3 ^= key[ 15]; sbox3(); x1 ^= key[ 16]; x4 ^= key[ 17]; x3 ^= key[ 18]; x0 ^= key[ 19]; sbox4(); x4 ^= key[ 20]; x2 ^= key[ 21]; x1 ^= key[ 22]; x0 ^= key[ 23]; sbox5(); x2 ^= key[ 24]; x0 ^= key[ 25]; x4 ^= key[ 26]; x1 ^= key[ 27]; sbox6(); x2 ^= key[ 28]; x0 ^= key[ 29]; x3 ^= key[ 30]; x4 ^= key[ 31]; sbox7(); x0 = x3; x3 = x2; x2 = x4; x0 ^= key[ 32]; x1 ^= key[ 33]; x2 ^= key[ 34]; x3 ^= key[ 35]; sbox0(); x1 ^= key[ 36]; x4 ^= key[ 37]; x2 ^= key[ 38]; x0 ^= key[ 39]; sbox1(); x0 ^= key[ 40]; x4 ^= key[ 41]; x2 ^= key[ 42]; x1 ^= key[ 43]; sbox2(); x2 ^= key[ 44]; x1 ^= key[ 45]; x4 ^= key[ 46]; x3 ^= key[ 47]; sbox3(); x1 ^= key[ 48]; x4 ^= key[ 49]; x3 ^= key[ 50]; x0 ^= key[ 51]; sbox4(); x4 ^= key[ 52]; x2 ^= key[ 53]; x1 ^= key[ 54]; x0 ^= key[ 55]; sbox5(); x2 ^= key[ 56]; x0 ^= key[ 57]; x4 ^= key[ 58]; x1 ^= key[ 59]; sbox6(); x2 ^= key[ 60]; x0 ^= key[ 61]; x3 ^= key[ 62]; x4 ^= key[ 63]; sbox7(); x0 = x3; x3 = x2; x2 = x4; x0 ^= key[ 64]; x1 ^= key[ 65]; x2 ^= key[ 66]; x3 ^= key[ 67]; sbox0(); x1 ^= key[ 68]; x4 ^= key[ 69]; x2 ^= key[ 70]; x0 ^= key[ 71]; sbox1(); x0 ^= key[ 72]; x4 ^= key[ 73]; x2 ^= key[ 74]; x1 ^= key[ 75]; sbox2(); x2 ^= key[ 76]; x1 ^= key[ 77]; x4 ^= key[ 78]; x3 ^= key[ 79]; sbox3(); x1 ^= key[ 80]; x4 ^= key[ 81]; x3 ^= key[ 82]; x0 ^= key[ 83]; sbox4(); x4 ^= key[ 84]; x2 ^= key[ 85]; x1 ^= key[ 86]; x0 ^= key[ 87]; sbox5(); x2 ^= key[ 88]; x0 ^= key[ 89]; x4 ^= key[ 90]; x1 ^= key[ 91]; sbox6(); x2 ^= key[ 92]; x0 ^= key[ 93]; x3 ^= key[ 94]; x4 ^= key[ 95]; sbox7(); x0 = x3; x3 = x2; x2 = x4; x0 ^= key[ 96]; x1 ^= key[ 97]; x2 ^= key[ 98]; x3 ^= key[ 99]; sbox0(); x1 ^= key[100]; x4 ^= key[101]; x2 ^= key[102]; x0 ^= key[103]; sbox1(); x0 ^= key[104]; x4 ^= key[105]; x2 ^= key[106]; x1 ^= key[107]; sbox2(); x2 ^= key[108]; x1 ^= key[109]; x4 ^= key[110]; x3 ^= key[111]; sbox3(); x1 ^= key[112]; x4 ^= key[113]; x3 ^= key[114]; x0 ^= key[115]; sbox4(); x4 ^= key[116]; x2 ^= key[117]; x1 ^= key[118]; x0 ^= key[119]; sbox5(); x2 ^= key[120]; x0 ^= key[121]; x4 ^= key[122]; x1 ^= key[123]; sbox6(); x2 ^= key[124]; x0 ^= key[125]; x3 ^= key[126]; x4 ^= key[127]; sbox7noLT(); x0 = x3; x3 = x2; x2 = x4; x0 ^= key[128]; x1 ^= key[129]; x2 ^= key[130]; x3 ^= key[131]; out[o ] = (byte)(x3 >>> 24); out[o+ 1] = (byte)(x3 >>> 16); out[o+ 2] = (byte)(x3 >>> 8); out[o+ 3] = (byte) x3; out[o+ 4] = (byte)(x2 >>> 24); out[o+ 5] = (byte)(x2 >>> 16); out[o+ 6] = (byte)(x2 >>> 8); out[o+ 7] = (byte) x2; out[o+ 8] = (byte)(x1 >>> 24); out[o+ 9] = (byte)(x1 >>> 16); out[o+10] = (byte)(x1 >>> 8); out[o+11] = (byte) x1; out[o+12] = (byte)(x0 >>> 24); out[o+13] = (byte)(x0 >>> 16); out[o+14] = (byte)(x0 >>> 8); out[o+15] = (byte) x0; } public synchronized void decrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) { final int[] key = (int[]) K; x3 = (in[i ] & 0xff) << 24 | (in[i+ 1] & 0xff) << 16 | (in[i+ 2] & 0xff) << 8 | (in[i+ 3] & 0xff); x2 = (in[i+ 4] & 0xff) << 24 | (in[i+ 5] & 0xff) << 16 | (in[i+ 6] & 0xff) << 8 | (in[i+ 7] & 0xff); x1 = (in[i+ 8] & 0xff) << 24 | (in[i+ 9] & 0xff) << 16 | (in[i+10] & 0xff) << 8 | (in[i+11] & 0xff); x0 = (in[i+12] & 0xff) << 24 | (in[i+13] & 0xff) << 16 | (in[i+14] & 0xff) << 8 | (in[i+15] & 0xff); x0 ^= key[128]; x1 ^= key[129]; x2 ^= key[130]; x3 ^= key[131]; sboxI7noLT(); x3 ^= key[124]; x0 ^= key[125]; x1 ^= key[126]; x4 ^= key[127]; sboxI6(); x0 ^= key[120]; x1 ^= key[121]; x2 ^= key[122]; x4 ^= key[123]; sboxI5(); x1 ^= key[116]; x3 ^= key[117]; x4 ^= key[118]; x2 ^= key[119]; sboxI4(); x1 ^= key[112]; x2 ^= key[113]; x4 ^= key[114]; x0 ^= key[115]; sboxI3(); x0 ^= key[108]; x1 ^= key[109]; x4 ^= key[110]; x2 ^= key[111]; sboxI2(); x1 ^= key[104]; x3 ^= key[105]; x4 ^= key[106]; x2 ^= key[107]; sboxI1(); x0 ^= key[100]; x1 ^= key[101]; x2 ^= key[102]; x4 ^= key[103]; sboxI0(); x0 ^= key[ 96]; x3 ^= key[ 97]; x1 ^= key[ 98]; x4 ^= key[ 99]; sboxI7(); x1 = x3; x3 = x4; x4 = x2; x3 ^= key[ 92]; x0 ^= key[ 93]; x1 ^= key[ 94]; x4 ^= key[ 95]; sboxI6(); x0 ^= key[ 88]; x1 ^= key[ 89]; x2 ^= key[ 90]; x4 ^= key[ 91]; sboxI5(); x1 ^= key[ 84]; x3 ^= key[ 85]; x4 ^= key[ 86]; x2 ^= key[ 87]; sboxI4(); x1 ^= key[ 80]; x2 ^= key[ 81]; x4 ^= key[ 82]; x0 ^= key[ 83]; sboxI3(); x0 ^= key[ 76]; x1 ^= key[ 77]; x4 ^= key[ 78]; x2 ^= key[ 79]; sboxI2(); x1 ^= key[ 72]; x3 ^= key[ 73]; x4 ^= key[ 74]; x2 ^= key[ 75]; sboxI1(); x0 ^= key[ 68]; x1 ^= key[ 69]; x2 ^= key[ 70]; x4 ^= key[ 71]; sboxI0(); x0 ^= key[ 64]; x3 ^= key[ 65]; x1 ^= key[ 66]; x4 ^= key[ 67]; sboxI7(); x1 = x3; x3 = x4; x4 = x2; x3 ^= key[ 60]; x0 ^= key[ 61]; x1 ^= key[ 62]; x4 ^= key[ 63]; sboxI6(); x0 ^= key[ 56]; x1 ^= key[ 57]; x2 ^= key[ 58]; x4 ^= key[ 59]; sboxI5(); x1 ^= key[ 52]; x3 ^= key[ 53]; x4 ^= key[ 54]; x2 ^= key[ 55]; sboxI4(); x1 ^= key[ 48]; x2 ^= key[ 49]; x4 ^= key[ 50]; x0 ^= key[ 51]; sboxI3(); x0 ^= key[ 44]; x1 ^= key[ 45]; x4 ^= key[ 46]; x2 ^= key[ 47]; sboxI2(); x1 ^= key[ 40]; x3 ^= key[ 41]; x4 ^= key[ 42]; x2 ^= key[ 43]; sboxI1(); x0 ^= key[ 36]; x1 ^= key[ 37]; x2 ^= key[ 38]; x4 ^= key[ 39]; sboxI0(); x0 ^= key[ 32]; x3 ^= key[ 33]; x1 ^= key[ 34]; x4 ^= key[ 35]; sboxI7(); x1 = x3; x3 = x4; x4 = x2; x3 ^= key[ 28]; x0 ^= key[ 29]; x1 ^= key[ 30]; x4 ^= key[ 31]; sboxI6(); x0 ^= key[ 24]; x1 ^= key[ 25]; x2 ^= key[ 26]; x4 ^= key[ 27]; sboxI5(); x1 ^= key[ 20]; x3 ^= key[ 21]; x4 ^= key[ 22]; x2 ^= key[ 23]; sboxI4(); x1 ^= key[ 16]; x2 ^= key[ 17]; x4 ^= key[ 18]; x0 ^= key[ 19]; sboxI3(); x0 ^= key[ 12]; x1 ^= key[ 13]; x4 ^= key[ 14]; x2 ^= key[ 15]; sboxI2(); x1 ^= key[ 8]; x3 ^= key[ 9]; x4 ^= key[ 10]; x2 ^= key[ 11]; sboxI1(); x0 ^= key[ 4]; x1 ^= key[ 5]; x2 ^= key[ 6]; x4 ^= key[ 7]; sboxI0(); x2 = x1; x1 = x3; x3 = x4; x0 ^= key[ 0]; x1 ^= key[ 1]; x2 ^= key[ 2]; x3 ^= key[ 3]; out[o ] = (byte)(x3 >>> 24); out[o+ 1] = (byte)(x3 >>> 16); out[o+ 2] = (byte)(x3 >>> 8); out[o+ 3] = (byte) x3; out[o+ 4] = (byte)(x2 >>> 24); out[o+ 5] = (byte)(x2 >>> 16); out[o+ 6] = (byte)(x2 >>> 8); out[o+ 7] = (byte) x2; out[o+ 8] = (byte)(x1 >>> 24); out[o+ 9] = (byte)(x1 >>> 16); out[o+10] = (byte)(x1 >>> 8); out[o+11] = (byte) x1; out[o+12] = (byte)(x0 >>> 24); out[o+13] = (byte)(x0 >>> 16); out[o+14] = (byte)(x0 >>> 8); out[o+15] = (byte) x0; } public boolean selfTest() { if (valid == null) { boolean result = super.selfTest(); // do symmetry tests if (result) { result = testKat(KAT_KEY, KAT_CT); } valid = new Boolean(result); } return valid.booleanValue(); } // Own methods. ---------------------------------------------------------- private void sbox0() { x3 ^= x0; x4 = x1; x1 &= x3; x4 ^= x2; x1 ^= x0; x0 |= x3; x0 ^= x4; x4 ^= x3; x3 ^= x2; x2 |= x1; x2 ^= x4; x4 ^= -1; x4 |= x1; x1 ^= x3; x1 ^= x4; x3 |= x0; x1 ^= x3; x4 ^= x3; x1 = (x1 << 13) | (x1 >>> 19); x4 ^= x1; x3 = x1 << 3; x2 = (x2 << 3) | (x2 >>> 29); x4 ^= x2; x0 ^= x2; x4 = (x4 << 1) | (x4 >>> 31); x0 ^= x3; x0 = (x0 << 7) | (x0 >>> 25); x3 = x4; x1 ^= x4; x3 <<= 7; x1 ^= x0; x2 ^= x0; x2 ^= x3; x1 = (x1 << 5) | (x1 >>> 27); x2 = (x2 << 22) | (x2 >>> 10); } private void sbox1() { x4 = ~x4; x3 = x1; x1 ^= x4; x3 |= x4; x3 ^= x0; x0 &= x1; x2 ^= x3; x0 ^= x4; x0 |= x2; x1 ^= x3; x0 ^= x1; x4 &= x2; x1 |= x4; x4 ^= x3; x1 ^= x2; x3 |= x0; x1 ^= x3; x3 = ~x3; x4 ^= x0; x3 &= x2; x4 = ~x4; x3 ^= x1; x4 ^= x3; x0 = (x0 << 13) | (x0 >>> 19); x4 ^= x0; x3 = x0 << 3; x2 = (x2 << 3) | (x2 >>> 29); x4 ^= x2; x1 ^= x2; x4 = (x4 << 1) | (x4 >>> 31); x1 ^= x3; x1 = (x1 << 7) | (x1 >>> 25); x3 = x4; x0 ^= x4; x3 <<= 7; x0 ^= x1; x2 ^= x1; x2 ^= x3; x0 = (x0 << 5) | (x0 >>> 27); x2 = (x2 << 22) | (x2 >>> 10); } private void sbox2() { x3 = x0; x0 = x0 & x2; x0 = x0 ^ x1; x2 = x2 ^ x4; x2 = x2 ^ x0; x1 = x1 | x3; x1 = x1 ^ x4; x3 = x3 ^ x2; x4 = x1; x1 = x1 | x3; x1 = x1 ^ x0; x0 = x0 & x4; x3 = x3 ^ x0; x4 = x4 ^ x1; x4 = x4 ^ x3; x3 = ~x3; x2 = (x2 << 13) | (x2 >>> 19); x1 ^= x2; x0 = x2 << 3; x4 = (x4 << 3) | (x4 >>> 29); x1 ^= x4; x3 ^= x4; x1 = (x1 << 1) | (x1 >>> 31); x3 ^= x0; x3 = (x3 << 7) | (x3 >>> 25); x0 = x1; x2 ^= x1; x0 <<= 7; x2 ^= x3; x4 ^= x3; x4 ^= x0; x2 = (x2 << 5) | (x2 >>> 27); x4 = (x4 << 22) | (x4 >>> 10); } private void sbox3() { x0 = x2; x2 = x2 | x3; x3 = x3 ^ x1; x1 = x1 & x0; x0 = x0 ^ x4; x4 = x4 ^ x3; x3 = x3 & x2; x0 = x0 | x1; x3 = x3 ^ x0; x2 = x2 ^ x1; x0 = x0 & x2; x1 = x1 ^ x3; x0 = x0 ^ x4; x1 = x1 | x2; x1 = x1 ^ x4; x2 = x2 ^ x3; x4 = x1; x1 = x1 | x3; x1 = x1 ^ x2; x1 = (x1 << 13) | (x1 >>> 19); x4 ^= x1; x2 = x1 << 3; x3 = (x3 << 3) | (x3 >>> 29); x4 ^= x3; x0 ^= x3; x4 = (x4 << 1) | (x4 >>> 31); x0 ^= x2; x0 = (x0 << 7) | (x0 >>> 25); x2 = x4; x1 ^= x4; x2 <<= 7; x1 ^= x0; x3 ^= x0; x3 ^= x2; x1 = (x1 << 5) | (x1 >>> 27); x3 = (x3 << 22) | (x3 >>> 10); } private void sbox4() { x4 = x4 ^ x0; x0 = ~x0; x3 = x3 ^ x0; x0 = x0 ^ x1; x2 = x4; x4 = x4 & x0; x4 = x4 ^ x3; x2 = x2 ^ x0; x1 = x1 ^ x2; x3 = x3 & x2; x3 = x3 ^ x1; x1 = x1 & x4; x0 = x0 ^ x1; x2 = x2 | x4; x2 = x2 ^ x1; x1 = x1 | x0; x1 = x1 ^ x3; x3 = x3 & x0; x1 = ~x1; x2 = x2 ^ x3; x4 = (x4 << 13) | (x4 >>> 19); x2 ^= x4; x3 = x4 << 3; x1 = (x1 << 3) | (x1 >>> 29); x2 ^= x1; x0 ^= x1; x2 = (x2 << 1) | (x2 >>> 31); x0 ^= x3; x0 = (x0 << 7) | (x0 >>> 25); x3 = x2; x4 ^= x2; x3 <<= 7; x4 ^= x0; x1 ^= x0; x1 ^= x3; x4 = (x4 << 5) | (x4 >>> 27); x1 = (x1 << 22) | (x1 >>> 10); } private void sbox5() { x4 = x4 ^ x2; x2 = x2 ^ x0; x0 = ~x0; x3 = x2; x2 = x2 & x4; x1 = x1 ^ x0; x2 = x2 ^ x1; x1 = x1 | x3; x3 = x3 ^ x0; x0 = x0 & x2; x0 = x0 ^ x4; x3 = x3 ^ x2; x3 = x3 ^ x1; x1 = x1 ^ x4; x4 = x4 & x0; x1 = ~x1; x4 = x4 ^ x3; x3 = x3 | x0; x1 = x1 ^ x3; x2 = (x2 << 13) | (x2 >>> 19); x0 ^= x2; x3 = x2 << 3; x4 = (x4 << 3) | (x4 >>> 29); x0 ^= x4; x1 ^= x4; x0 = (x0 << 1) | (x0 >>> 31); x1 ^= x3; x1 = (x1 << 7) | (x1 >>> 25); x3 = x0; x2 ^= x0; x3 <<= 7; x2 ^= x1; x4 ^= x1; x4 ^= x3; x2 = (x2 << 5) | (x2 >>> 27); x4 = (x4 << 22) | (x4 >>> 10); } private void sbox6() { x4 = ~x4; x3 = x1; x1 = x1 & x2; x2 = x2 ^ x3; x1 = x1 ^ x4; x4 = x4 | x3; x0 = x0 ^ x1; x4 = x4 ^ x2; x2 = x2 | x0; x4 = x4 ^ x0; x3 = x3 ^ x2; x2 = x2 | x1; x2 = x2 ^ x4; x3 = x3 ^ x1; x3 = x3 ^ x2; x1 = ~x1; x4 = x4 & x3; x4 = x4 ^ x1; x2 = (x2 << 13) | (x2 >>> 19); x0 ^= x2; x1 = x2 << 3; x3 = (x3 << 3) | (x3 >>> 29); x0 ^= x3; x4 ^= x3; x0 = (x0 << 1) | (x0 >>> 31); x4 ^= x1; x4 = (x4 << 7) | (x4 >>> 25); x1 = x0; x2 ^= x0; x1 <<= 7; x2 ^= x4; x3 ^= x4; x3 ^= x1; x2 = (x2 << 5) | (x2 >>> 27); x3 = (x3 << 22) | (x3 >>> 10); } private void sbox7() { x1 = x3; x3 = x3 & x0; x3 = x3 ^ x4; x4 = x4 & x0; x1 = x1 ^ x3; x3 = x3 ^ x0; x0 = x0 ^ x2; x2 = x2 | x1; x2 = x2 ^ x3; x4 = x4 ^ x0; x3 = x3 ^ x4; x4 = x4 & x2; x4 = x4 ^ x1; x1 = x1 ^ x3; x3 = x3 & x2; x1 = ~x1; x3 = x3 ^ x1; x1 = x1 & x2; x0 = x0 ^ x4; x1 = x1 ^ x0; x3 = (x3 << 13) | (x3 >>> 19); x1 ^= x3; x0 = x3 << 3; x4 = (x4 << 3) | (x4 >>> 29); x1 ^= x4; x2 ^= x4; x1 = (x1 << 1) | (x1 >>> 31); x2 ^= x0; x2 = (x2 << 7) | (x2 >>> 25); x0 = x1; x3 ^= x1; x0 <<= 7; x3 ^= x2; x4 ^= x2; x4 ^= x0; x3 = (x3 << 5) | (x3 >>> 27); x4 = (x4 << 22) | (x4 >>> 10); } /** The final S-box, with no transform. */ private void sbox7noLT() { x1 = x3; x3 = x3 & x0; x3 = x3 ^ x4; x4 = x4 & x0; x1 = x1 ^ x3; x3 = x3 ^ x0; x0 = x0 ^ x2; x2 = x2 | x1; x2 = x2 ^ x3; x4 = x4 ^ x0; x3 = x3 ^ x4; x4 = x4 & x2; x4 = x4 ^ x1; x1 = x1 ^ x3; x3 = x3 & x2; x1 = ~x1; x3 = x3 ^ x1; x1 = x1 & x2; x0 = x0 ^ x4; x1 = x1 ^ x0; } private void sboxI7noLT() { x4 = x2; x2 ^= x0; x0 &= x3; x2 = ~x2; x4 |= x3; x3 ^= x1; x1 |= x0; x0 ^= x2; x2 &= x4; x1 ^= x2; x2 ^= x0; x0 |= x2; x3 &= x4; x0 ^= x3; x4 ^= x1; x3 ^= x4; x4 |= x0; x3 ^= x2; x4 ^= x2; } private void sboxI6() { x1 = (x1 >>> 22) | (x1 << 10); x3 = (x3 >>> 5) | (x3 << 27); x2 = x0; x1 ^= x4; x2 <<= 7; x3 ^= x4; x1 ^= x2; x3 ^= x0; x4 = (x4 >>> 7) | (x4 << 25); x0 = (x0 >>> 1) | (x0 << 31); x0 ^= x3; x2 = x3 << 3; x4 ^= x2; x3 = (x3 >>> 13) | (x3 << 19); x0 ^= x1; x4 ^= x1; x1 = (x1 >>> 3) | (x1 << 29); x3 ^= x1; x2 = x1; x1 &= x3; x2 ^= x4; x1 = ~x1; x4 ^= x0; x1 ^= x4; x2 |= x3; x3 ^= x1; x4 ^= x2; x2 ^= x0; x0 &= x4; x0 ^= x3; x3 ^= x4; x3 |= x1; x4 ^= x0; x2 ^= x3; } private void sboxI5() { x2 = (x2 >>> 22) | (x2 << 10); x0 = (x0 >>> 5) | (x0 << 27); x3 = x1; x2 ^= x4; x3 <<= 7; x0 ^= x4; x2 ^= x3; x0 ^= x1; x4 = (x4 >>> 7) | (x4 << 25); x1 = (x1 >>> 1) | (x1 << 31); x1 ^= x0; x3 = x0 << 3; x4 ^= x3; x0 = (x0 >>> 13) | (x0 << 19); x1 ^= x2; x4 ^= x2; x2 = (x2 >>> 3) | (x2 << 29); x1 = ~x1; x3 = x4; x2 ^= x1; x4 |= x0; x4 ^= x2; x2 |= x1; x2 &= x0; x3 ^= x4; x2 ^= x3; x3 |= x0; x3 ^= x1; x1 &= x2; x1 ^= x4; x3 ^= x2; x4 &= x3; x3 ^= x1; x4 ^= x0; x4 ^= x3; x3 = ~x3; } private void sboxI4() { x4 = (x4 >>> 22) | (x4 << 10); x1 = (x1 >>> 5) | (x1 << 27); x0 = x3; x4 ^= x2; x0 <<= 7; x1 ^= x2; x4 ^= x0; x1 ^= x3; x2 = (x2 >>> 7) | (x2 << 25); x3 = (x3 >>> 1) | (x3 << 31); x3 ^= x1; x0 = x1 << 3; x2 ^= x0; x1 = (x1 >>> 13) | (x1 << 19); x3 ^= x4; x2 ^= x4; x4 = (x4 >>> 3) | (x4 << 29); x0 = x4; x4 &= x2; x4 ^= x3; x3 |= x2; x3 &= x1; x0 ^= x4; x0 ^= x3; x3 &= x4; x1 = ~x1; x2 ^= x0; x3 ^= x2; x2 &= x1; x2 ^= x4; x1 ^= x3; x4 &= x1; x2 ^= x1; x4 ^= x0; x4 |= x2; x2 ^= x1; x4 ^= x3; } private void sboxI3() { x4 = (x4 >>> 22) | (x4 << 10); x1 = (x1 >>> 5) | (x1 << 27); x3 = x2; x4 ^= x0; x3 <<= 7; x1 ^= x0; x4 ^= x3; x1 ^= x2; x0 = (x0 >>> 7) | (x0 << 25); x2 = (x2 >>> 1) | (x2 << 31); x2 ^= x1; x3 = x1 << 3; x0 ^= x3; x1 = (x1 >>> 13) | (x1 << 19); x2 ^= x4; x0 ^= x4; x4 = (x4 >>> 3) | (x4 << 29); x3 = x4; x4 ^= x2; x2 &= x4; x2 ^= x1; x1 &= x3; x3 ^= x0; x0 |= x2; x0 ^= x4; x1 ^= x3; x4 ^= x1; x1 |= x0; x1 ^= x2; x3 ^= x4; x4 &= x0; x2 |= x0; x2 ^= x4; x3 ^= x1; x4 ^= x3; } private void sboxI2() { x4 = (x4 >>> 22) | (x4 << 10); x0 = (x0 >>> 5) | (x0 << 27); x3 = x1; x4 ^= x2; x3 <<= 7; x0 ^= x2; x4 ^= x3; x0 ^= x1; x2 = (x2 >>> 7) | (x2 << 25); x1 = (x1 >>> 1) | (x1 << 31); x1 ^= x0; x3 = x0 << 3; x2 ^= x3; x0 = (x0 >>> 13) | (x0 << 19); x1 ^= x4; x2 ^= x4; x4 = (x4 >>> 3) | (x4 << 29); x4 ^= x2; x2 ^= x0; x3 = x2; x2 &= x4; x2 ^= x1; x1 |= x4; x1 ^= x3; x3 &= x2; x4 ^= x2; x3 &= x0; x3 ^= x4; x4 &= x1; x4 |= x0; x2 = ~x2; x4 ^= x2; x0 ^= x2; x0 &= x1; x2 ^= x3; x2 ^= x0; } private void sboxI1() { x4 = (x4 >>> 22) | (x4 << 10); x1 = (x1 >>> 5) | (x1 << 27); x0 = x3; x4 ^= x2; x0 <<= 7; x1 ^= x2; x4 ^= x0; x1 ^= x3; x2 = (x2 >>> 7) | (x2 << 25); x3 = (x3 >>> 1) | (x3 << 31); x3 ^= x1; x0 = x1 << 3; x2 ^= x0; x1 = (x1 >>> 13) | (x1 << 19); x3 ^= x4; x2 ^= x4; x4 = (x4 >>> 3) | (x4 << 29); x0 = x3; x3 ^= x2; x2 &= x3; x0 ^= x4; x2 ^= x1; x1 |= x3; x4 ^= x2; x1 ^= x0; x1 |= x4; x3 ^= x2; x1 ^= x3; x3 |= x2; x3 ^= x1; x0 = ~x0; x0 ^= x3; x3 |= x1; x3 ^= x1; x3 |= x0; x2 ^= x3; } private void sboxI0() { x2 = (x2 >>> 22) | (x2 << 10); x0 = (x0 >>> 5) | (x0 << 27); x3 = x1; x2 ^= x4; x3 <<= 7; x0 ^= x4; x2 ^= x3; x0 ^= x1; x4 = (x4 >>> 7) | (x4 << 25); x1 = (x1 >>> 1) | (x1 << 31); x1 ^= x0; x3 = x0 << 3; x4 ^= x3; x0 = (x0 >>> 13) | (x0 << 19); x1 ^= x2; x4 ^= x2; x2 = (x2 >>> 3) | (x2 << 29); x2 = ~x2; x3 = x1; x1 |= x0; x3 = ~x3; x1 ^= x2; x2 |= x3; x1 ^= x4; x0 ^= x3; x2 ^= x0; x0 &= x4; x3 ^= x0; x0 |= x1; x0 ^= x2; x4 ^= x3; x2 ^= x1; x4 ^= x0; x4 ^= x1; x2 &= x4; x3 ^= x2; } private void sboxI7() { x1 = (x1 >>> 22) | (x1 << 10); x0 = (x0 >>> 5) | (x0 << 27); x2 = x3; x1 ^= x4; x2 <<= 7; x0 ^= x4; x1 ^= x2; x0 ^= x3; x4 = (x4 >>> 7) | (x4 << 25); x3 = (x3 >>> 1) | (x3 << 31); x3 ^= x0; x2 = x0 << 3; x4 ^= x2; x0 = (x0 >>> 13) | (x0 << 19); x3 ^= x1; x4 ^= x1; x1 = (x1 >>> 3) | (x1 << 29); x2 = x1; x1 ^= x0; x0 &= x4; x1 = ~x1; x2 |= x4; x4 ^= x3; x3 |= x0; x0 ^= x1; x1 &= x2; x3 ^= x1; x1 ^= x0; x0 |= x1; x4 &= x2; x0 ^= x4; x2 ^= x3; x4 ^= x2; x2 |= x0; x4 ^= x1; x2 ^= x1; } } --------------030803070808080300040402-- From raif@fl.net.au Sat Sep 07 01:26:22 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17nY6v-0000mE-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 01:26:21 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17nY6s-0000gx-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 01:26:21 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17nY6r-0000c0-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 01:26:18 -0400 Received: from fl.net.au (unknown [202.181.5.14]) by delenn.fl.net.au (Postfix) with ESMTP id 8580A180077; Sat, 7 Sep 2002 15:28:27 +1000 (EST) Message-ID: <3D798E5E.5050500@fl.net.au> Date: Sat, 07 Sep 2002 15:27:58 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-au, fr-fr, en, en-us MIME-Version: 1.0 To: Casey Marshall Cc: Dag Arne Osvik , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [patch] Inlined Serpent References: <3D76BFBF.1040103@metastatic.org> <3D773DE3.20004@fl.net.au> <3D7950F4.7090901@metastatic.org> X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 hello Casey, Casey Marshall wrote: | Raif S. Naffah wrote: | | hello Casey and Dag, | | | | Casey Marshall wrote: | | | (I'm CC'ing this to the crypto list, too) | | | | | | Attached is a patch... | | | | this version: | | a. is _not_ thread-safe, | | The attached version should be; it still declares the five register | variables (x0..x4) as global for the class, but declares the encrypt | and decrypt methods to be explicitly synchronized. This doesn't appear | to affect speed, unless you're encrypting and decrypting in parallel. agreed. | | b. generates a 54K class file (compared to 14K for the current impl.) | | --with Sun's javac compiler. | | ...this version does a bit better... much better. it is now at 25K (again with javac 1.3.1). | | c. runs almost 20 times slower than the current one! | | Because of the JIT. Sun's HotSpot can handle this one better. | | I was aiming for the following with this version: | | 1) Keep constant array indices. | 2) Keep methods short, so the JIT can handle them. | 3) Don't repeat too much code (e.g. there is a one function per S-Box). | | The results are a good compromise: | | ~ Sun 1.4.0 GCJ (native) Kaffe 1.0.6 | encrypt 4584.8003 KB/s 6262.5254 KB/s 4283.1689 KB/s | decrypt 4861.5435 KB/s 6230.0640 KB/s 4662.7871 KB/s on my athlon 1700+: ~ [java] Exercising serpent... ~ [java] Running 1000000 iterations: ~ [java] Encryption: time = 2.594, speed = 6023.5156 KB/s ~ [java] Decryption: time = 2.414, speed = 6472.659 KB/s very nice job mate :-) | ...By the way with this | version GNU's Serpent will be faster than BouncyCastle's. have you compared the performance of other algorithms? | | i see some advantages in keeping the current implementation _and_ adding | | the new in-lined one as an alternative; say SerpentInLined? (naming | | suggestions are welcome) | | | | I wonder if a naming scheme following "SerpentSBoxImpl" or something | similar is more appropriate, since what we're talking about here is a | particular implementation of "bit-sliced" S-Boxes. with the figures of the new implementation, do we still want to keep both? | | ... | | pointers to finding out more about JIT nuts and bolts, anybody? | | There's this: which | says that HotSpot JITs can take the option -Xmaxjitcodesize. | Generated code size is obviously not the problem, since trying the fully | inlined version with outrageously huge compiled code sizes results in | equivalent performance. I can't find anything relating to time spent in | the compiler. | | Sun has published some books on their JITs, none of which I've seen, | though. thanks + cheers; rsn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.1.90 (MingW32) Comment: Que du magnifique iD8DBQE9eY5Y+e1AKnsTRiERA0g1AJoDCXIZ23HBUZop0pHHkBonvQNqvgCgx6r3 h9a3MYCDb/WYPW8tcAzveZw= =6B19 -----END PGP SIGNATURE----- From raif@fl.net.au Sat Sep 07 13:34:50 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17njTt-0007Os-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 13:34:49 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17njTq-0007OL-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 13:34:49 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17njTp-0007Nx-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 13:34:46 -0400 Received: from fl.net.au (unknown [202.181.5.1]) by delenn.fl.net.au (Postfix) with ESMTP id 8811A17FC65 for ; Sun, 8 Sep 2002 03:36:48 +1000 (EST) Message-ID: <3D7A3912.8030704@fl.net.au> Date: Sun, 08 Sep 2002 03:36:18 +1000 From: "Raif S. Naffah" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 X-Accept-Language: en-au, fr-fr, en, en-us MIME-Version: 1.0 To: "classpathx-crypto@gnu.org" X-Enigmail-Version: 0.65.2.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: [Classpathx-crypto] 1 algorithm - many implementations (long) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 hello everyone, in the last few days, and thanks to Dag Arne Osvik contribution and Casey's work, the prospect of having more than one implementation of the same Algorithm is now real. practically speaking, we may have for some algorithms more than one implementation, each exhibiting different features, and may be in specific circumstances, better than the other(s). the problem is then: 1. should we handle this situation? and 2. if yes, how? except for Mode and Padding, our algorithms can be instantiated with a public constructor. this is enough for someone who already _knows_ (a) how many implementation(s) there are for a given algorithm, and (b) how they differ from each other (when there's more than one). but this is not good enough for the majority of users. they know (or expected to know) the _environment_ in which the algorithm is supposed to operate, but not which is the _best_ implementation for that algorithm in that environment. it is desirable, if the user can communicate the description of the operating environment and a set of preferences, and in return obtain the _right_ implementation for the job. observation #1: the name of the algorithm alone is not the best way of selecting one among many implementations of a designated algorithm. also, in some rare situations -i'll give an example later- a user may not be interested at all in a specific algorithm but rather in other criteria that the algorithm's _type_ is capable of providing. an example would be to encrypt a username+password for a database user. the question such user would be asking is: what is the fastest available implementation of a block cipher that i have which can encrypt 16-byte at a time, using a 16-byte key? observation #2: which algorithm to use (the name) may not be the most important criterion when selecting an implementation. on the other hand, how can a provider of an algorithm's implementation(s), know _a priori_ what are the possible user's preference attributes, so he can accomodate them? more importatnly, how can the _seamntics_ of those attributes be interpreted similarly by more than one provider? observation #3: there is no universal set of preferences/attributes that providers can share, or agree to interpret the same way. now we already have in place a Factory pattern that allows users to select the algorithm by name; e.g.: ~ gnu.crypto.cipher.CipherFactory.getInstance(foo); furthermore, we have defined in our API, methods that forces the implementor to expose some intrinsic attributes of the type of algorithm being implemented; e.g.: ~ Iterator i = gnu.crypto.cipher.IBlockCipher.blockSizes(); ~ Iterator j = gnu.crypto.cipher.IBlockCipher.keySizes(); in addition, at the global level, we have Factory methods to return the names of all implemented algorithms; e.g.: ~ Iterator i = gnu.crypto.cipher.CipherFactory.getNames(); so what are we missing? * the name, and some intrinsic attributes related to the type of the algorithm --and these would change for each type-- are not enough. intuitively speed should be another factor; size of the byte-code may be a factor. what else? * the platform is a factor. java runs everywhere but it does not run the same way. hence the questions we should answer (in addition to the initial ones) are: 3. what are the possible criteria a user may specify for selecting an implementation? 4. can we forsee all possible criteria or should we allow the solution to cater for criteria that may be added in the future? 5. how are we going to compute/collect/set the values for the selected criteria in combination with possible environment --i.e. static, runtime, both? 6. how are we going to let the users tell us what they want? (system properties, command line options, opaque object in Factory methods) comments? suggestions? cheers; rsn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.1.90 (MingW32) Comment: Que du magnifique iD8DBQE9ejkN+e1AKnsTRiERA1Z2AKD+SrjOHTVhdrm7kzhgKu4GX65FNACg/Grj VGkGYC6LhvMcAll9VWQ/FW0= =zUh1 -----END PGP SIGNATURE----- From rsdio@metastatic.org Sat Sep 07 21:12:16 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17nqca-0006BY-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 21:12:16 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17nqcX-0006B3-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 21:12:15 -0400 Received: from 12-235-115-156.client.attbi.com ([12.235.115.156] helo=blossom) by monty-python.gnu.org with esmtp (Exim 4.10) id 17nqcX-0006Af-00 for classpathx-crypto@gnu.org; Sat, 07 Sep 2002 21:12:13 -0400 Received: from dexter ([192.168.0.2] helo=metastatic.org) by blossom with esmtp (Exim 3.35 #1 (Debian)) id 17nqbq-0003ix-00; Sat, 07 Sep 2002 18:11:30 -0700 Message-ID: <3D7AA380.7010805@metastatic.org> Date: Sat, 07 Sep 2002 18:10:24 -0700 From: Casey Marshall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Raif S. Naffah" CC: Dag Arne Osvik , classpathx-crypto@gnu.org Subject: Re: [Classpathx-crypto] [patch] Inlined Serpent References: <3D76BFBF.1040103@metastatic.org> <3D773DE3.20004@fl.net.au> <3D7950F4.7090901@metastatic.org> <3D798E5E.5050500@fl.net.au> X-Enigmail-Version: 0.63.3.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------050602010307090203030100" Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------050602010307090203030100 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Raif S. Naffah wrote: | hello Casey, | | [...] | | | ...By the way with this | | version GNU's Serpent will be faster than BouncyCastle's. | | have you compared the performance of other algorithms? | Where they intersect (the "cool" AES candidates Rijndael, Serpent, and Twofish) BC wins with Twofish, while GNU's Rijndael does better. Take, of course, these benchmarks with as large a grain of salt as you see fit 8-). | | | | i see some advantages in keeping the current implementation _and_ | adding | | | the new in-lined one as an alternative; say SerpentInLined? (naming | | | suggestions are welcome) | | | | | | | I wonder if a naming scheme following "SerpentSBoxImpl" or something | | similar is more appropriate, since what we're talking about here is a | | particular implementation of "bit-sliced" S-Boxes. | | with the figures of the new implementation, do we still want to keep both? | I don't see any compelling reason to keep the old one. Plus I like the new version better -- passing arrays to the S-box and transform methods was clever, but probably not the best way to do it. As one more idea, attached is a version of Serpent that Dag sent me that replaces the int[] version of the session key with a new class, SerpentKey, which just has 132 integer fields k0..k131. This avoids bounds-checking, and I can get this version up to 15MB/s when compiled with GCJ. - -- Casey Marshall < rsdio@metastatic.org > http://metastatic.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org iD8DBQE9eqOAgAuWMgRGsWsRAsCPAJ47xFBGTu9jqjdWFRnMjIFkToi/GQCePPdC lw6pGQ7TB19LUI6uLkuye74= =IvJT -----END PGP SIGNATURE----- --------------050602010307090203030100 Content-Type: application/gzip; name="serpent-gcj.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="serpent-gcj.tar.gz" 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 --------------050602010307090203030100-- From dtaylo11@bigpond.net.au Mon Sep 09 06:55:54 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17oMCw-0006JW-00 for classpathx-crypto@gnu.org; Mon, 09 Sep 2002 06:55:54 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17oMCu-0006J4-00 for classpathx-crypto@gnu.org; Mon, 09 Sep 2002 06:55:53 -0400 Received: from mta02ps.bigpond.com ([144.135.25.134]) by monty-python.gnu.org with esmtp (Exim 4.10) id 17oMCt-0006IQ-00 for classpathx-crypto@gnu.org; Mon, 09 Sep 2002 06:55:52 -0400 Received: from athlon ([144.135.25.72]) by mta02ps.bigpond.com (Netscape Messaging Server 4.15 mta02ps May 23 2002 23:53:28) with SMTP id H263OZ00.04L for ; Mon, 9 Sep 2002 20:55:47 +1000 Received: from CPE-203-51-14-186.nsw.bigpond.net.au ([203.51.14.186]) by PSMAM02.mailsvc.email.bigpond.com(MailRouter V3.0n 80/6046492); 09 Sep 2002 20:55:47 Message-ID: <001301c257ef$5c3e9240$ba0e33cb@athlon> From: "David Taylor" To: Date: Mon, 9 Sep 2002 20:55:07 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Subject: [Classpathx-crypto] (no subject) Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: From raif@fl.net.au Sat Sep 28 23:08:55 2002 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17vURy-0003mS-00 for classpathx-crypto@gnu.org; Sat, 28 Sep 2002 23:08:54 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17vURw-0003mG-00 for classpathx-crypto@gnu.org; Sat, 28 Sep 2002 23:08:54 -0400 Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au) by monty-python.gnu.org with esmtp (Exim 4.10) id 17vURw-0003kG-00 for classpathx-crypto@gnu.org; Sat, 28 Sep 2002 23:08:52 -0400 Received: from solomon (unknown [202.181.5.31]) by delenn.fl.net.au (Postfix) with ESMTP id 13BED17FC87; Sun, 29 Sep 2002 13:11:46 +1000 (EST) Content-Type: text/plain; charset="us-ascii" From: "Raif S. Naffah" To: classpathx-crypto@gnu.org Date: Sun, 29 Sep 2002 13:10:51 +1000 User-Agent: KMail/1.4.1 Cc: gnu-crypto-dicsuss@gnu.org MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-Id: <200209291311.10812.raif@fl.net.au> Subject: [Classpathx-crypto] GNU Crypto project Sender: classpathx-crypto-admin@gnu.org Errors-To: classpathx-crypto-admin@gnu.org X-BeenThere: classpathx-crypto@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 hello List members, i'm happy to announce that, since the public release of version 1.0.0,=20 GNU Crypto has now been dubbed a GNU Project. as such it now enjoys=20 the privilege of living in its own project place at: http://savannah.gnu.org/projects/gnu-crypto/ i'd like to take this opportunity to re-iterate my thanks to Nic Ferrier=20 and the Classpathx team for incubating GNU Crypto since its inception. this move brings implies the followings: 1. the new home is as mentioned above. 2. the home page, is now at: http://www.gnu.org/software/gnu-crypto/ 3. this mailing list is now replaced by gnu-crypto-discuss@gnu.org. =20 unfortunately current members have to subscribe to the new list. =20 information on how to do that can be found at: http://mail.gnu.org/mailman/listinfo/gnu-crypto-discuss tomorrow (the end-of-month) i'll download the archives of this list and=20 make them available from the project's (new) homepage, so we can have=20 (historic) continuity. when i'll do that i'll also update the homepage=20 accordingly. so please, starting from tomorrow, refrain my using this=20 list. 4. a new public list for announcements regarding the project has also=20 been created. for subscription see: http://mail.gnu.org/mailman/listinfo/gnu-crypto-announce 5. the sources of the project, are now accessible from CVS, to the=20 developers, through the following URL: :ext:your-username@subversions.gnu.org:/cvsroot/gnu-crypto 6. finally, i'd like to welcome Keith Burdis to the developers team. =20 Keith will be looking after the Simple Authentication and Security=20 Layer (SASL) part of the library and the related javax.security=20 packages. bienvenue Keith :-) cheers; rsn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) Comment: Que du magnifique iD8DBQE9lm9D+e1AKnsTRiERAzL9AJ0YfrrYKK5KlJSW+LzBvtIrFW/9EgCg2oEP lguqohq2L85hd9y/y5mFZro=3D =3DDqtM -----END PGP SIGNATURE-----