Skip to content

Commit b8aa342

Browse files
committed
update
1 parent 5361609 commit b8aa342

File tree

2 files changed

+229
-25
lines changed

2 files changed

+229
-25
lines changed

onlykey/cli.py

Lines changed: 219 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,9 @@ def prompt_pin():
154154
slot_id = 11
155155
elif sys.argv[2] == '6b':
156156
slot_id = 12
157-
elif sys.argv[2] >= int('25'):
158-
slot_id = int(sys.argv[2])
159157
except:
160-
print("setslot <id> <type> [value]")
161-
print("<id> must be slot number 1a - 6b")
158+
print("setslot [id] [type] [value]")
159+
print("[id] must be slot number 1a - 6b")
162160
return
163161

164162
if sys.argv[3] == 'label':
@@ -204,8 +202,8 @@ def prompt_pin():
204202
elif sys.argv[3] == 'addchar4':
205203
only_key.setslot(slot_id, MessageField.NEXTKEY5, sys.argv[4])
206204
else:
207-
print("setslot <id> <type> [value]")
208-
print("<type> must be ['label', 'ecckeylabel', 'rsakeylabel', 'url', 'addchar1', 'delay1', 'username', 'addchar2', 'delay2', 'password', 'addchar3', 'delay3', '2fa', 'totpkey', 'addchar4', 'addchar5']")
205+
print("setslot [id] [type] [value]")
206+
print("[type] must be ['label', 'ecckeylabel', 'rsakeylabel', 'url', 'addchar1', 'delay1', 'username', 'addchar2', 'delay2', 'password', 'addchar3', 'delay3', '2fa', 'totpkey', 'addchar4', 'addchar5']")
209207
return
210208
elif sys.argv[1] == 'wipeslot':
211209
try:
@@ -233,19 +231,118 @@ def prompt_pin():
233231
slot_id = 11
234232
elif sys.argv[2] == '6b':
235233
slot_id = 12
236-
elif sys.argv[2] >= int('25'):
237-
slot_id = int(sys.argv[2])
238234
except:
239-
print("wipeslot <id>")
240-
print("<id> must be slot number 1a - 6b")
235+
print("wipeslot [id]")
236+
print("[id] must be slot number 1a - 6b")
241237
return
242238
only_key.wipeslot(slot_id)
243239
elif sys.argv[1] == 'backupkey':
244240
only_key.generate_backup_key()
245241
elif sys.argv[1] == 'setkey':
246-
only_key.setkey(sys.argv[2], sys.argv[3], sys.argv[4])
242+
try:
243+
if sys.argv[2] == 'RSA1':
244+
slot_id = 25
245+
elif sys.argv[2] == 'RSA2':
246+
slot_id = 26
247+
elif sys.argv[2] == 'RSA3':
248+
slot_id = 27
249+
elif sys.argv[2] == 'RSA4':
250+
slot_id = 28
251+
elif sys.argv[2] == 'ECC1':
252+
slot_id = 29
253+
elif sys.argv[2] == 'ECC2':
254+
slot_id = 30
255+
elif sys.argv[2] == 'ECC3':
256+
slot_id = 31
257+
elif sys.argv[2] == 'ECC4':
258+
slot_id = 32
259+
elif sys.argv[2] == 'ECC5':
260+
slot_id = 33
261+
elif sys.argv[2] == 'ECC6':
262+
slot_id = 34
263+
elif sys.argv[2] == 'ECC7':
264+
slot_id = 35
265+
elif sys.argv[2] == 'ECC8':
266+
slot_id = 36
267+
elif sys.argv[2] == 'ECC9':
268+
slot_id = 37
269+
elif sys.argv[2] == 'ECC10':
270+
slot_id = 38
271+
elif sys.argv[2] == 'ECC11':
272+
slot_id = 39
273+
elif sys.argv[2] == 'ECC12':
274+
slot_id = 40
275+
elif sys.argv[2] == 'ECC13':
276+
slot_id = 41
277+
elif sys.argv[2] == 'ECC14':
278+
slot_id = 42
279+
elif sys.argv[2] == 'ECC15':
280+
slot_id = 43
281+
elif sys.argv[2] == 'ECC16':
282+
slot_id = 44
283+
elif sys.argv[2] == 'HMAC1':
284+
slot_id = 58
285+
elif sys.argv[2] == 'HMAC2':
286+
slot_id = 57
287+
except:
288+
print("setkey [key id] [type]")
289+
print("[key id] must be a key number")
290+
return
291+
if (sys.argv[3]=='label'):
292+
only_key.setslot(slot_id, MessageField.LABEL, sys.argv[4])
293+
else:
294+
only_key.setkey(str(slot_id), sys.argv[3], sys.argv[4])
247295
elif sys.argv[1] == 'wipekey':
248-
only_key.wipekey(sys.argv[2])
296+
try:
297+
if sys.argv[2] == 'RSA1':
298+
slot_id = 25
299+
elif sys.argv[2] == 'RSA2':
300+
slot_id = 26
301+
elif sys.argv[2] == 'RSA3':
302+
slot_id = 27
303+
elif sys.argv[2] == 'RSA4':
304+
slot_id = 28
305+
elif sys.argv[2] == 'ECC1':
306+
slot_id = 29
307+
elif sys.argv[2] == 'ECC2':
308+
slot_id = 30
309+
elif sys.argv[2] == 'ECC3':
310+
slot_id = 31
311+
elif sys.argv[2] == 'ECC4':
312+
slot_id = 32
313+
elif sys.argv[2] == 'ECC5':
314+
slot_id = 33
315+
elif sys.argv[2] == 'ECC6':
316+
slot_id = 34
317+
elif sys.argv[2] == 'ECC7':
318+
slot_id = 35
319+
elif sys.argv[2] == 'ECC8':
320+
slot_id = 36
321+
elif sys.argv[2] == 'ECC9':
322+
slot_id = 37
323+
elif sys.argv[2] == 'ECC10':
324+
slot_id = 38
325+
elif sys.argv[2] == 'ECC11':
326+
slot_id = 39
327+
elif sys.argv[2] == 'ECC12':
328+
slot_id = 40
329+
elif sys.argv[2] == 'ECC13':
330+
slot_id = 41
331+
elif sys.argv[2] == 'ECC14':
332+
slot_id = 42
333+
elif sys.argv[2] == 'ECC15':
334+
slot_id = 43
335+
elif sys.argv[2] == 'ECC16':
336+
slot_id = 44
337+
elif sys.argv[2] == 'HMAC1':
338+
slot_id = 58
339+
elif sys.argv[2] == 'HMAC2':
340+
slot_id = 57
341+
except:
342+
print("wipekey [key id] [type]")
343+
print("[key id] must be a key number")
344+
return
345+
only_key.wipekey(str(slot_id))
249346
elif sys.argv[1] == 'idletimeout':
250347
only_key.setslot(1, MessageField.IDLETIMEOUT, int(sys.argv[2]))
251348
elif sys.argv[1] == 'wipemode':
@@ -462,11 +559,9 @@ def mprompt():
462559
slot_id = 11
463560
elif data[1] == '6b':
464561
slot_id = 12
465-
elif data[1] >= int('25'):
466-
slot_id = int(data[1])
467562
except:
468-
print("setslot <id> <type> [value]")
469-
print("<id> must be slot number 1a - 6b")
563+
print("setslot [id] [type] [value]")
564+
print("[id] must be slot number 1a - 6b")
470565
continue
471566
if data[2] == 'label':
472567
only_key.setslot(slot_id, MessageField.LABEL, data[3])
@@ -511,8 +606,8 @@ def mprompt():
511606
elif data[2] == 'addchar4':
512607
only_key.setslot(slot_id, MessageField.NEXTKEY3, data[3])
513608
else:
514-
print("setslot <id> <type> [value]")
515-
print("<type> must be ['label', 'ecckeylabel', 'rsakeylabel', 'url', 'addchar1', 'delay1', 'username', 'addchar2', 'delay2', 'password', 'addchar3', 'delay3', '2fa', 'totpkey', 'addchar4', 'addchar5']")
609+
print("setslot [id] [type] [value]")
610+
print("[type] must be ['label', 'ecckeylabel', 'rsakeylabel', 'url', 'addchar1', 'delay1', 'username', 'addchar2', 'delay2', 'password', 'addchar3', 'delay3', '2fa', 'totpkey', 'addchar4', 'addchar5']")
516611
continue
517612
elif data[0] == 'wipeslot':
518613
try:
@@ -540,11 +635,9 @@ def mprompt():
540635
slot_id = 11
541636
elif data[1] == '6b':
542637
slot_id = 12
543-
elif data[1] >= int('25'):
544-
slot_id = int(data[1])
545638
except:
546-
print("wipeslot <id>")
547-
print("<id> must be slot number 1a - 6b")
639+
print("wipeslot [id]")
640+
print("[id] must be slot number 1a - 6b")
548641
continue
549642
only_key.wipeslot(slot_id)
550643
elif data[0] == 'backupkey':
@@ -554,13 +647,114 @@ def mprompt():
554647
continue
555648
elif data[0] == 'setkey':
556649
try:
557-
key = prompt_pass()
558-
only_key.setkey(data[1], data[2], key)
650+
if data[1] == 'RSA1':
651+
slot_id = 25
652+
elif data[1] == 'RSA2':
653+
slot_id = 26
654+
elif data[1] == 'RSA3':
655+
slot_id = 27
656+
elif data[1] == 'RSA4':
657+
slot_id = 28
658+
elif data[1] == 'ECC1':
659+
slot_id = 29
660+
elif data[1] == 'ECC2':
661+
slot_id = 30
662+
elif data[1] == 'ECC3':
663+
slot_id = 31
664+
elif data[1] == 'ECC4':
665+
slot_id = 32
666+
elif data[1] == 'ECC5':
667+
slot_id = 33
668+
elif data[1] == 'ECC6':
669+
slot_id = 34
670+
elif data[1] == 'ECC7':
671+
slot_id = 35
672+
elif data[1] == 'ECC8':
673+
slot_id = 36
674+
elif data[1] == 'ECC9':
675+
slot_id = 37
676+
elif data[1] == 'ECC10':
677+
slot_id = 38
678+
elif data[1] == 'ECC11':
679+
slot_id = 39
680+
elif data[1] == 'ECC12':
681+
slot_id = 40
682+
elif data[1] == 'ECC13':
683+
slot_id = 41
684+
elif data[1] == 'ECC14':
685+
slot_id = 42
686+
elif data[1] == 'ECC15':
687+
slot_id = 43
688+
elif data[1] == 'ECC16':
689+
slot_id = 44
690+
elif data[1] == 'HMAC1':
691+
slot_id = 58
692+
elif data[1] == 'HMAC2':
693+
slot_id = 57
694+
except:
695+
print("setkey [key id] [type]")
696+
print("[key id] must be a key number")
697+
continue
698+
try:
699+
if (data[2]=='label'):
700+
only_key.setslot(slot_id, MessageField.LABEL, data[3])
701+
else:
702+
key = prompt_pass()
703+
only_key.setkey(str(slot_id), data[2], key)
559704
except:
560705
continue
561706
elif data[0] == 'wipekey':
562707
try:
563-
only_key.wipekey(data[1])
708+
if data[1] == 'RSA1':
709+
slot_id = 25
710+
elif data[1] == 'RSA2':
711+
slot_id = 26
712+
elif data[1] == 'RSA3':
713+
slot_id = 27
714+
elif data[1] == 'RSA4':
715+
slot_id = 28
716+
elif data[1] == 'ECC1':
717+
slot_id = 29
718+
elif data[1] == 'ECC2':
719+
slot_id = 30
720+
elif data[1] == 'ECC3':
721+
slot_id = 31
722+
elif data[1] == 'ECC4':
723+
slot_id = 32
724+
elif data[1] == 'ECC5':
725+
slot_id = 33
726+
elif data[1] == 'ECC6':
727+
slot_id = 34
728+
elif data[1] == 'ECC7':
729+
slot_id = 35
730+
elif data[1] == 'ECC8':
731+
slot_id = 36
732+
elif data[1] == 'ECC9':
733+
slot_id = 37
734+
elif data[1] == 'ECC10':
735+
slot_id = 38
736+
elif data[1] == 'ECC11':
737+
slot_id = 39
738+
elif data[1] == 'ECC12':
739+
slot_id = 40
740+
elif data[1] == 'ECC13':
741+
slot_id = 41
742+
elif data[1] == 'ECC14':
743+
slot_id = 42
744+
elif data[1] == 'ECC15':
745+
slot_id = 43
746+
elif data[1] == 'ECC16':
747+
slot_id = 44
748+
elif data[1] == 'HMAC1':
749+
slot_id = 58
750+
elif data[1] == 'HMAC2':
751+
slot_id = 57
752+
except:
753+
print("wipekey [key id] [type]")
754+
print("[key id] must be a key number")
755+
continue
756+
try:
757+
only_key.wipekey(str(slot_id))
564758
except:
565759
continue
566760
elif data[0] == 'idletimeout':

onlykey/client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,16 @@ def setkey(self, slot_number, ecc_type, value):
449449
# slot 129-130 HMAC Keys
450450
# slot 101-116 ECC Keys
451451
# slot 1-4 RSA Keys
452+
if ecc_type == 'x':
453+
ecc_type = '1'
454+
elif ecc_type == 'n':
455+
ecc_type = '2'
456+
elif ecc_type == 's':
457+
ecc_type = '3'
458+
#elif sys.argv[2] == 'r':
459+
# ecc_type = '1'
460+
elif ecc_type == 'h':
461+
ecc_type = '9'
452462
logging.debug('SETTING KEY IN SLOT:', slot_number)
453463
logging.debug('TO TYPE:', ecc_type)
454464
logging.debug('KEY:', value)

0 commit comments

Comments
 (0)