Subversion Repositories freemyipod

Rev

Rev 143 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 143 Rev 387
Line 25... Line 25...
25
#include "hmacsha1.h"
25
#include "hmacsha1.h"
26
#include "s5l8701.h"
26
#include "s5l8701.h"
27
#include "thread.h"
27
#include "thread.h"
28
 
28
 
29
 
29
 
-
 
30
struct mutex hmacsha1_mutex;
-
 
31
 
-
 
32
 
30
void hmacsha1(void* data, uint32_t size, void* result)
33
void hmacsha1(void* data, uint32_t size, void* result)
31
{
34
{
32
    uint32_t ptr, i;
35
    uint32_t ptr, i;
33
    uint32_t ctrl = 2;
36
    uint32_t ctrl = 2;
-
 
37
    mutex_lock(&hmacsha1_mutex, TIMEOUT_BLOCK);
34
    PWRCON(1) &= ~4;
38
    PWRCON(1) &= ~4;
35
    for (ptr = 0; ptr < (size >> 2); ptr += 0x10)
39
    for (ptr = 0; ptr < (size >> 2); ptr += 0x10)
36
    {
40
    {
37
      for (i = 0; i < 0x10; i++) HASHDATAIN[i] = ((uint32_t*)data)[ptr + i];
41
      for (i = 0; i < 0x10; i++) HASHDATAIN[i] = ((uint32_t*)data)[ptr + i];
38
      HASHCTRL = ctrl;
42
      HASHCTRL = ctrl;
39
      ctrl = 0xA;
43
      ctrl = 0xA;
40
      while (HASHCTRL & 1) yield();
44
      while (HASHCTRL & 1) yield();
41
    }
45
    }
42
    for (i = 0; i < 5; i ++) ((uint32_t*)result)[i] = HASHRESULT[i];
46
    for (i = 0; i < 5; i ++) ((uint32_t*)result)[i] = HASHRESULT[i];
43
    PWRCON(1) |= 4;
47
    PWRCON(1) |= 4;
-
 
48
    mutex_unlock(&hmacsha1_mutex);
44
}
49
}