IRK Calculator ============== author: optedoblivion@google.com This tool is used to verify an IRK + RPA pair and generate an RPA from an IRK. ``` irk-calculator 0.1.0 USAGE: irk-calculator --command --irk --address
OPTIONS: -a, --address
-c, --command -h, --help Print help information -i, --irk -V, --version Print version information ``` ``` Legend: IRK = Identity Resolving Key (see BT Spec for more) RPA = Resolvable Private Address (see BT spec for more) ``` Example Data: ``` IRK: 0102030405060708090a0b0c0d0e0f10 RPA: 79:CB:92:70:BE:B3 IRK: 0102030405060708090a0b0c0d0e0f10 RPA: 58:9B:3E:A3:5B:24 ``` Example Usage: ``` $ cargo build && RUST_BACKTRACE=1 ./target/debug/irk-calculator -c verify -a "79:CB:92:70:BE:B3" -i "0102030405060708090a0b0c0d0e0f10" Verifying 0102030405060708090a0b0c0d0e0f10 and 79:CB:92:70:BE:B3 IRK Byte Array: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] Address Byte Array: [79, CB, 92, 70, BE, B3] prand: [79, CB, 92] Given Hash: [70, BE, B3] irk slice: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] =====[ ah ]===== K: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] R: [79, CB, 92] R': [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 79, CB, 92] =====[ e ]===== key_reversed: [10, 0F, 0E, 0D, 0C, 0B, 0A, 09, 08, 07, 06, 05, 04, 03, 02, 01] block: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 79, CB, 92] e-block: [05, 5A, 53, 46, BB, 26, 28, 67, AC, 24, 73, 66, 41, 70, BE, B3] =====[ /e ]===== ED: [05, 5A, 53, 46, BB, 26, 28, 67, AC, 24, 73, 66, 41, 70, BE, B3] ret: [70, BE, B3] =====[ /ah ]===== given hash: [70, BE, B3] calcd hash: [70, BE, B3] IRK + Address combination is valid: true $ cargo build && RUST_BACKTRACE=1 ./target/debug/irk-calculator -c verify -a "58:9B:3E:A3:5B:24" -i "0102030405060708090a0b0c0d0e0f10" Verifying 0102030405060708090a0b0c0d0e0f10 and 58:9B:3E:A3:5B:24 IRK Byte Array: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] Address Byte Array: [58, 9B, 3E, A3, 5B, 24] prand: [58, 9B, 3E] Given Hash: [A3, 5B, 24] irk slice: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] =====[ ah ]===== K: [01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10] R: [58, 9B, 3E] R': [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 58, 9B, 3E] =====[ e ]===== key_reversed: [10, 0F, 0E, 0D, 0C, 0B, 0A, 09, 08, 07, 06, 05, 04, 03, 02, 01] block: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 58, 9B, 3E] e-block: [A9, EC, 77, CE, BB, BC, 24, A7, 45, 1E, 5E, 23, F7, A3, 5B, 24] =====[ /e ]===== ED: [A9, EC, 77, CE, BB, BC, 24, A7, 45, 1E, 5E, 23, F7, A3, 5B, 24] ret: [A3, 5B, 24] =====[ /ah ]===== given hash: [A3, 5B, 24] calcd hash: [A3, 5B, 24] IRK + Address combination is valid: true ```