parent
590b72fec3
commit
f3ec923656
@ -0,0 +1,29 @@
|
|||||||
|
from Crypto.Cipher import AES
|
||||||
|
from authorizedkeys.parser import parse_file, dump_file, AuthorizedKey
|
||||||
|
import sys
|
||||||
|
from base64 import b64decode, b64encode
|
||||||
|
|
||||||
|
# TODO: argument parsing!
|
||||||
|
|
||||||
|
# TODO: We currently do not care for authenticity, since we are only concerned
|
||||||
|
# with the comment. We could sign the rest of the data in the comment and do
|
||||||
|
# some AEAD, but we currently do not.
|
||||||
|
key = open('secret', 'rb').read(16)
|
||||||
|
iv = b"WTF I don't care"
|
||||||
|
cipher = AES.new(key, AES.MODE_CBC, iv=iv)
|
||||||
|
|
||||||
|
output = sys.stdout
|
||||||
|
decrypt = True if sys.argv[1] == 'decrypt' else False
|
||||||
|
encrypt = not decrypt
|
||||||
|
input = open(sys.argv[2]) if len(sys.argv) >= 3 else sys.stdin
|
||||||
|
|
||||||
|
# FIXME: file closing
|
||||||
|
|
||||||
|
keys = parse_file(input)
|
||||||
|
for k in keys:
|
||||||
|
if isinstance(k, AuthorizedKey):
|
||||||
|
if encrypt:
|
||||||
|
k.comment = b64encode(cipher.encrypt(k.comment.encode())).decode()
|
||||||
|
else: # And now this is just wow.
|
||||||
|
k.comment = cipher.decrypt(b64decode(k.comment)).decode()
|
||||||
|
dump_file(keys, output)
|
Loading…
Reference in New Issue