Skip to content

Commit

Permalink
PSGradePIC fully working. Enjoy :D. BTW, it's based on TI-89 port, th…
Browse files Browse the repository at this point in the history
…ank you very much Brandon Wilson ^^.
  • Loading branch information
Noltari committed Dec 9, 2010
1 parent 4a9f288 commit e75e2ad
Show file tree
Hide file tree
Showing 6 changed files with 487 additions and 393 deletions.
93 changes: 0 additions & 93 deletions hmac.c

This file was deleted.

38 changes: 0 additions & 38 deletions hmac.h

This file was deleted.

49 changes: 31 additions & 18 deletions main.c
Expand Up @@ -4,8 +4,6 @@

#use rs232(baud=115200, xmit=pin_c6, rcv=pin_c7)

#define CHALLENGE_INDEX 7

/////////////////////////
// Bootloader Memory Space
// USB HID Bootloader
Expand Down Expand Up @@ -39,8 +37,7 @@ char const USB_STRING_DESC[] = {5, USB_DESC_STRING_TYPE, 'H', 0, 'O', 0, 'L', 0,
#include "pic18_usb.c"
#include "usb.c"

#include "hmac.h"
#include "hmac.c"
#include "sha1.c"

#define PORT_EMPTY 0x0100
#define PORT_FULL 0x0103
Expand Down Expand Up @@ -255,30 +252,40 @@ void main() {
int i;
unsigned char c;
Chirp();
c = usb_get_packet(2, TxBuf, 8);

/*
c = usb_get_packet(2, TxBuf, 8);
for(i = 0; i < 8; i++) {
jig_challenge_res[8 * nJigs + i] = TxBuf[i];
jigChallengeData[8 * nJigs + i] = TxBuf[i];
}
*/

c = usb_get_packet(2, jigChallengeData + nJigs * 8, 8);

nJigs++;
EP_BDxST_I(1) = 0x40; //Clear IN endpoint
if(nJigs == 8) {
//prepare the response
jig_challenge_res[1]--;
jig_challenge_res[3]++;
jig_challenge_res[6]++;
//Calculate jig response
HMACInit();
HMACAddBytes(jigChallengeData+7, 20);

HMACBlock(&jig_challenge_res[CHALLENGE_INDEX],20);
for (i = 0; i < 64; i++) {
jigResponseData[i] = 0x00;
}

HMACDone();
jigResponseData[0] = 0x00;
jigResponseData[1] = 0x00;
jigResponseData[2] = 0xFF;
jigResponseData[3] = 0x00;
jigResponseData[4] = 0x2E;
jigResponseData[5] = 0x02;
jigResponseData[6] = 0x02;
jigResponseData[7] = 0xAA;
jigResponseData[8] = 0xAA;

jig_challenge_res[7] = jig_id[0];
jig_challenge_res[8] = jig_id[1];
//usb_task();

for( i = 0; i < 20; i++) {
jig_challenge_res[9+i] = hmacdigest[i];
}
HMACDone(jigResponseData+9);

nJigs = 0;
WaitJig = 2;
Expand All @@ -289,7 +296,7 @@ void main() {
else {
int n = 0;
for(n = 0; n < 8; ++n) {
TxBuf[n] = jig_challenge_res[8 * nJigs + n];
TxBuf[n] = jigResponseData[8 * nJigs + n];
}
if(usb_put_packet(1, TxBuf, 8, nJigs == 0 ? 0 : USB_DTS_TOGGLE)) {
Delay10ms(1);
Expand All @@ -300,6 +307,12 @@ void main() {
WaitJig = 0;
Delay10ms(50);
Disconnect = 5;

/*
nJigs = 0;
WaitJig = 0;
OnDongleOK();
*/
}
}
}
Expand Down

0 comments on commit e75e2ad

Please sign in to comment.