summaryrefslogtreecommitdiff
path: root/utils/imxtools/sbtools/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/imxtools/sbtools/misc.c')
-rw-r--r--utils/imxtools/sbtools/misc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/utils/imxtools/sbtools/misc.c b/utils/imxtools/sbtools/misc.c
index dae4f92121..b9f5d21f7e 100644
--- a/utils/imxtools/sbtools/misc.c
+++ b/utils/imxtools/sbtools/misc.c
@@ -117,8 +117,23 @@ bool parse_key(char **pstr, struct crypto_key_t *key)
117 while(isspace(*str)) 117 while(isspace(*str))
118 str++; 118 str++;
119 /* CRYPTO_KEY: 32 hex characters 119 /* CRYPTO_KEY: 32 hex characters
120 * CRYPTO_USBOTP: usbotp(vid:pid) where vid and pid are hex numbers */ 120 * CRYPTO_USBOTP: usbotp(vid:pid) where vid and pid are hex numbers
121 if(isxdigit(str[0])) 121 * CRYPTO_XOR_KEY: 256 hex characters */
122 if(isxdigit(str[0]) && strlen(str) >= 256 && isxdigit(str[32]))
123 {
124 for(int j = 0; j < 128; j++)
125 {
126 byte a, b;
127 if(convxdigit(str[2 * j], &a) || convxdigit(str[2 * j + 1], &b))
128 return false;
129 key->u.xor_key[j / 64].key[j % 64] = (a << 4) | b;
130 }
131 /* skip key */
132 *pstr = str + 256;
133 key->method = CRYPTO_XOR_KEY;
134 return true;
135 }
136 else if(isxdigit(str[0]))
122 { 137 {
123 if(strlen(str) < 32) 138 if(strlen(str) < 32)
124 return false; 139 return false;