Hi Kaiyi Zhang, (or is Zhang Kaiyi?)
I think there's a little misconception in your proposal. Bcrypt the algorithm is not the same as the BCrypt functions in crypt32. I believe that Microsoft redesigned their CryptoAPI and more or less renamed their functions BCrypt*. I don't believe they have any relationship to the Bcrypt algorithm by Niels Provos and David Mazieres. I don't know how many applications depend on the Bcrypt* functions in newer crypt32 implementations, vs. the the Crypt* functions that are present in all versions of crypt32. If you want feedback on Wine crypto stuff, I'm probably the best to help you with that. Sorry if I've been a little absent, I'm pretty busy between my family and my day job of late. I have another idea for you that I think is tractable, and perhaps up your alley. The DH and DSS algorithms are still unimplemented in Wine. We already have tests for them, so I think it should be possible to contribute implementations. See the tests in dlls/dssenh/tests. I hope that helps. --Juan On Thu, May 9, 2013 at 8:35 PM, Kaiyi Zhang <zky.own.s...@gmail.com> wrote: > Hello everyone: > > I am Kaiyi Zhang,A Computer Science and Engineering student from china, my > major is information security. My nickname in #winehackers is KaiyiZhang. I > heard the GSOC and I'm very interested in this, wine is tempting to me.I > have submitted my wine application before the deadline of GSOC. However, > There are some exams which takes a lot of time, So lack of communication > with the wine developers. I know it is late to apply for GSoC, however, I'm > still interesting to the cryptography work in Wine even if I'm not accept > as an official GSoC2013 student. Cryptography work is difficult, and Wine > is difficult, so cryptography in Wine is double difficult for a beginner > like me, could I ask for a mentor for the cryptography work even if my > proposal is not accepted? To my dear kindly future mentor: I don't know how > to thank you, but I'll work hard on contributing to the Wine project as > more as I can. Sincerely appreciate. > > > My idea is bcrypt improvement, I think it's very suitable for me, I > learned the information security. Cryptography is one of my courses. I > once development a Elliptic curve cryptography Demonstration system which > makes the ECC Graphical. And i found there is blank in bcrypt, I want to do > some improvement in this. I know there it's difficult for me to develop. > but i can code some test code firstly. I read the > dlls/rsaendh/tests/rsaenh.c: test_hashes(),test_des(),test_rsa() etc. and > test the code on ubuntu successfully. > > Here is my plan: > > Week 1 - Week 2 > - Get the Winedebug and document more adept > - Get more information about bcrypt > - Bcrypt Wiki: http://en.wikipedia.org/wiki/Bcrypt > - A Future-Adaptable Password Scheme: > http://static.usenix.org/events/usenix99/provos/provos_html/node1.html > - File of Bcrypt: http://bcrypt.sourceforge.net/ > - Read the Document of MSDN about Bcrypt and code some examples > - MSDN about Bcrypt: > http://msdn.microsoft.com/en-us/library/windows/desktop/aa833130(v=vs.85).aspx > > Week 3 - Week 5 > -Read some wine tests code and run some tests like: > - the basic encryption dll/crypt32/ > - Understand the bcrypt algorithm, there is a lot of code for learning > like: > - A Future-Adaptable Password Scheme: > http://static.usenix.org/events/usenix99/provos/provos_html/node1.html > - https://github.com/rg3/bcrypt > - https://code.google.com/p/py-bcrypt/source/browse/bcrypt/bcrypt.c > > Week 6 - Week 11 > - Code the BCrypt. According to the MSDN The Steps of Bcrypt > - Open the Algorithm Provider > - Get or Set Algorithm Properties > - Create or Import a key > - Perform Cryptiographic Operations > - Close the Algorithm Provider > There is a cross platform Bcrypt at http://bcrypt.sourceforge.net. > if it is possible we can use it and its license compatible with the wine > lgpl license. > - add stub functions for Tests functions() and code the Tests > functions(). The dlls/rsaenh/tests/rsaenh.c is a good reference. encrypt > the pdData and compare with the right value. stub BCryptCreateHash() > BCryptHashData() BCryptDuplicateHash() BCryptDuplicateHash > BCryptDestroyHash() for test_hashes(). stub BCryptGenerateSymmetricKey() > BCryptKeyDerivation() BCryptDestroyKey() for test_key_derivation(). stub > BCryptGenRandom() for test_gen_random(). > > Week 12 - End > - There are also some more cryptions need to tests, I can do more > improvement these > > Thank you. > > > >