[webkit-dev] MD5 in WebCore

Maciej Stachowiak mjs at apple.com
Tue Apr 20 04:12:17 PDT 2010

On Apr 20, 2010, at 3:32 AM, Fumitoshi Ukai (鵜飼文敏) wrote:

> I'm implementing new protocol of WebSocket ( http://www.whatwg.org/specs/web-socket-protocol/ 
>  ).
> Since it now requires MD5 in handshake, I wonder how I could add MD5  
> in WebCore.  For now, there is no MD5 in WebCore.  It is in  
> WebKitTools/DumpRenderTree to get message digest of image file.
> I'm thinking to add new header file as WebCore/platform/MD5.h, which  
> provides the following functions.
>   struct MD5_CTX;
>   void MD5_Init(MD5_CTX*);
>   void MD5_Update(MD5_CTX*, unsigned char* input, unsigned length);
>   void MD5_Final(unsigned char hash[16], MD5_CTX*);
> In Windows platform, it is implemented using "Cryptdll.dll".   Is it  
> ok to copy WebKitTools/DumpRenderTree/win/MD5.cpp to WebCore/ 
> platform/win/MD5.cpp, or move?
> In Mac platform, it is provided by <CommonCrypto/CommonDigest.h>  
> In Chromium, there is chrome/src/base/md5.{h,cc}.   Should I copy  
> this in WebCore/platform/chromium, or add dependency to base from  
> WebCore?
> How about other ports?  is it ok to link openssl or some other  
> library?  (or use implementation used in chromium?)
> I'm also wonder I need to put these functions in namespace WebCore.

If you put this code in WebCore, it should go in the WebCore  
namespace. I think it would also be a good idea to turn the API into  
something more WebCore-ish, something like:

namespace WebCore {

     class MD5 {
         MD5(); // what was MD5_Init
         addBytes(uint8_t* input, size_t length); // what was  
MD5_Update ; or maybe this should take a Vector<uint8_t>?
         Vector<uint8_t, 16> checksum(); // what was MD5_Final

(The key point being to match the coding style guidelines for names,  
but it also seems better to use a class here instead of a struct and  
functions that take a pointer to it.)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20100420/63864124/attachment.html>

More information about the webkit-dev mailing list