Subversion Repositories freemyipod

Rev

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

Rev 136 Rev 157
Line 38... Line 38...
38
#include "i2c.h"
38
#include "i2c.h"
39
#endif
39
#endif
40
#ifdef HAVE_BOOTFLASH
40
#ifdef HAVE_BOOTFLASH
41
#include "bootflash.h"
41
#include "bootflash.h"
42
#endif
42
#endif
-
 
43
#ifdef HAVE_HWKEYAES
-
 
44
#include "hwkeyaes.h"
-
 
45
#endif
-
 
46
#ifdef HAVE_HMACSHA1
-
 
47
#include "hmacsha1.h"
-
 
48
#endif
43
 
49
 
44
 
50
 
45
static uint8_t ctrlresp[2] CACHEALIGN_ATTR;
51
static uint8_t ctrlresp[2] CACHEALIGN_ATTR;
46
static uint32_t dbgrecvbuf[0x80] CACHEALIGN_ATTR;
52
static uint32_t dbgrecvbuf[0x80] CACHEALIGN_ATTR;
47
static uint32_t dbgsendbuf[0x80] CACHEALIGN_ATTR;
53
static uint32_t dbgsendbuf[0x80] CACHEALIGN_ATTR;
Line 59... Line 65...
59
    DBGACTION_CREAD,
65
    DBGACTION_CREAD,
60
    DBGACTION_CFLUSH,
66
    DBGACTION_CFLUSH,
61
    DBGACTION_EXECIMAGE,
67
    DBGACTION_EXECIMAGE,
62
    DBGACTION_EXECFIRMWARE,
68
    DBGACTION_EXECFIRMWARE,
63
    DBGACTION_READBOOTFLASH,
69
    DBGACTION_READBOOTFLASH,
64
    DBGACTION_WRITEBOOTFLASH
70
    DBGACTION_WRITEBOOTFLASH,
-
 
71
    DBGACTION_HWKEYAES,
-
 
72
    DBGACTION_HMACSHA1
65
};
73
};
66
 
74
 
67
static uint32_t dbgstack[0x100] STACK_ATTR;
75
static uint32_t dbgstack[0x100] STACK_ATTR;
68
struct wakeup dbgwakeup IBSS_ATTR;
76
struct wakeup dbgwakeup IBSS_ATTR;
69
extern struct scheduler_thread* scheduler_threads;
77
extern struct scheduler_thread* scheduler_threads;
Line 536... Line 544...
536
#endif
544
#endif
537
        case 24:  // EXECFIRMWARE
545
        case 24:  // EXECFIRMWARE
538
            if (set_dbgaction(DBGACTION_EXECFIRMWARE, 0)) break;
546
            if (set_dbgaction(DBGACTION_EXECFIRMWARE, 0)) break;
539
            dbgactionaddr = dbgrecvbuf[1];
547
            dbgactionaddr = dbgrecvbuf[1];
540
            break;
548
            break;
-
 
549
#ifdef HAVE_HWKEYAES
-
 
550
        case 25:  // HWKEYAES
-
 
551
            if (set_dbgaction(DBGACTION_HWKEYAES, 0)) break;
-
 
552
            dbgactiontype = ((uint8_t*)dbgrecvbuf)[4];
-
 
553
            dbgactionoffset = ((uint16_t*)dbgrecvbuf)[3];
-
 
554
            dbgactionaddr = dbgrecvbuf[2];
-
 
555
            dbgactionlength = dbgrecvbuf[3];
-
 
556
#endif
-
 
557
#ifdef HAVE_HMACSHA1
-
 
558
        case 26:  // HMACSHA1
-
 
559
            if (set_dbgaction(DBGACTION_HMACSHA1, 0)) break;
-
 
560
            dbgactionaddr = dbgrecvbuf[1];
-
 
561
            dbgactionlength = dbgrecvbuf[2];
-
 
562
            dbgactionoffset = dbgrecvbuf[3];
-
 
563
#endif
541
        default:
564
        default:
542
            dbgsendbuf[0] = 2;
565
            dbgsendbuf[0] = 2;
543
            size = 16;
566
            size = 16;
544
        }
567
        }
545
        usb_setup_dbg_listener();
568
        usb_setup_dbg_listener();
Line 641... Line 664...
641
                bootflash_writeraw((void*)dbgactionaddr, dbgactionoffset, dbgactionlength);
664
                bootflash_writeraw((void*)dbgactionaddr, dbgactionoffset, dbgactionlength);
642
                dbgasyncsendbuf[0] = 1;
665
                dbgasyncsendbuf[0] = 1;
643
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
666
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
644
                break;
667
                break;
645
#endif
668
#endif
-
 
669
#ifdef HAVE_HWKEYAES
-
 
670
            case DBGACTION_HWKEYAES:
-
 
671
                hwkeyaes((enum hwkeyaes_direction) dbgactiontype, dbgactionoffset,
-
 
672
                         (void*)dbgactionaddr, dbgactionlength);
-
 
673
                dbgasyncsendbuf[0] = 1;
-
 
674
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
-
 
675
                break;
-
 
676
#endif
-
 
677
#ifdef HAVE_HMACSHA1
-
 
678
            case DBGACTION_HMACSHA1:
-
 
679
                hmacsha1((void*)dbgactionaddr, dbgactionlength, (void*)dbgactionoffset);
-
 
680
                dbgasyncsendbuf[0] = 1;
-
 
681
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
-
 
682
                break;
-
 
683
#endif
646
            }
684
            }
647
            dbgaction = DBGACTION_IDLE;
685
            dbgaction = DBGACTION_IDLE;
648
        }
686
        }
649
    }
687
    }
650
}
688
}