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.