Skip to content
This repository has been archived by the owner on Jan 10, 2023. It is now read-only.

Updated Pycryptodome signer to work #174

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
27 changes: 20 additions & 7 deletions adb/sign_pycryptodome.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
from adb import adb_protocol

from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Signature import PKCS1_v1_5

class FakeSHA1:
oid = "1.3.14.3.2.26" # SHA-1 OID

class PycryptodomeAuthSigner(adb_protocol.AuthSigner):
def __init__(self, data: (bytes, bytearray)) -> None:
self.reset()
self._data = data

def reset(self) -> None:
self._data = b""

def update(self, data: (bytes, bytearray)) -> None:
self._data += data

def digest(self) -> (bytes, bytearray):
return self._data

class PycryptodomeSigner(adb_protocol.AuthSigner):
def __init__(self, rsa_key_path=None):
super(PycryptodomeAuthSigner, self).__init__()
super(PycryptodomeSigner, self).__init__()

if rsa_key_path:
with open(rsa_key_path + '.pub', 'rb') as rsa_pub_file:
Expand All @@ -18,8 +31,8 @@ def __init__(self, rsa_key_path=None):
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)
h = FakeSHA1(data)
return PKCS1_v1_5.new(self.rsa_key).sign(h)

def GetPublicKey(self):
return self.public_key
return self.public_key