Line 2,412: |
Line 2,412: |
| | | |
| ===== do_crypto ===== | | ===== do_crypto ===== |
− | This is the method responsible for all crypto operations performed during [[#KeygenLdr|KeygenLdr]]. It takes '''src_addr''', '''src_size''', '''iv_addr''', '''dst_addr''', '''mode''' and '''crypt_ver''' as arguments. | + | This is the method responsible for all crypto operations performed during [[#KeygenLdr|KeygenLdr]]. It takes '''src_addr''', '''src_size''', '''iv_addr''', '''dst_addr''', '''mode''' and '''use_imem''' as arguments. |
| // Check for invalid source data size | | // Check for invalid source data size |
| if (!src_size || (src_size & 0x0F)) | | if (!src_size || (src_size & 0x0F)) |
Line 2,556: |
Line 2,556: |
| // The next xfer instruction will be overridden | | // The next xfer instruction will be overridden |
| // and target changes from DMA to crypto input/output stream | | // and target changes from DMA to crypto input/output stream |
− | if (crypt_ver == 0x01) | + | if (use_imem) |
− | cxset(0xA1); // Flag 0xA0 is (0x80 | 0x20) | + | cxset(0xA1); // Flag 0xA0 is falcon imem <-> crypto input/output stream |
| else | | else |
| cxset(0x21); // Flag 0x20 is external mem <-> crypto input/output stream | | cxset(0x21); // Flag 0x20 is external mem <-> crypto input/output stream |
Line 2,570: |
Line 2,570: |
| // The next xfer instruction will be overridden | | // The next xfer instruction will be overridden |
| // and target changes from DMA to crypto input/output stream | | // and target changes from DMA to crypto input/output stream |
− | if (crypt_ver == 0x01) | + | if (use_imem) |
− | cxset(0xA1); // Flag 0xA0 is (0x80 | 0x20) | + | cxset(0xA1); // Flag 0xA0 is falcon imem <-> crypto input/output stream |
| else | | else |
| cxset(0x21); // Flag 0x20 is external mem <-> crypto input/output stream | | cxset(0x21); // Flag 0x20 is external mem <-> crypto input/output stream |
Line 2,583: |
Line 2,583: |
| // The next 2 xfer instructions will be overridden | | // The next 2 xfer instructions will be overridden |
| // and target changes from DMA to crypto input/output stream | | // and target changes from DMA to crypto input/output stream |
− | if (crypt_ver == 0x01) | + | if (use_imem) |
− | cxset(0xA2); // Flag 0xA0 is (0x80 | 0x20) | + | cxset(0xA2); // Flag 0xA0 is falcon imem <-> crypto input/output stream |
| else | | else |
| cxset(0x22); // Flag 0x20 is external mem <-> crypto input/output stream | | cxset(0x22); // Flag 0x20 is external mem <-> crypto input/output stream |