26 lines
731 B
Python
26 lines
731 B
Python
|
from adb import adb_protocol
|
||
|
|
||
|
from Crypto.Hash import SHA256
|
||
|
from Crypto.PublicKey import RSA
|
||
|
from Crypto.Signature import pkcs1_15
|
||
|
|
||
|
|
||
|
class PycryptodomeAuthSigner(adb_protocol.AuthSigner):
|
||
|
|
||
|
def __init__(self, rsa_key_path=None):
|
||
|
super(PycryptodomeAuthSigner, self).__init__()
|
||
|
|
||
|
if rsa_key_path:
|
||
|
with open(rsa_key_path + '.pub', 'rb') as rsa_pub_file:
|
||
|
self.public_key = rsa_pub_file.read()
|
||
|
|
||
|
with open(rsa_key_path, 'rb') as rsa_priv_file:
|
||
|
self.rsa_key = RSA.import_key(rsa_priv_file.read())
|
||
|
|
||
|
def Sign(self, data):
|
||
|
h = SHA256.new(data)
|
||
|
return pkcs1_15.new(self.rsa_key).sign(h)
|
||
|
|
||
|
def GetPublicKey(self):
|
||
|
return self.public_key
|