def generate_msg(command, keyfile): print("Generating message for '%s' using '%s' ..." % (command, keyfile)) # 0. Read private key from file try: with open(keyfile, 'rb') as f: pri = rsa.PrivateKey.load_pkcs1(f.read(), "PEM") except IOError: print "Error: No such key file. " sys.exit() # 1. Check the validation of command msg = ccpkt.build_msg(command) # 2. sign message and base64 encode cmdsig = rsa.sign(msg, pri, "SHA-256") #with open('keys/mrpub.pem', 'rb') as pf: # pub = rsa.PublicKey.load_pkcs1(pf.read(), "PEM") #master = rsa.verify(msg, cmdsig, pub) #if master: # print("Verify sucess") moo = slowaes.AESModeOfOperation() mode, orig_len, cipher = moo.encrypt(msg, moo.modeOfOperation["CBC"], _aes_key, moo.aes.keySize["SIZE_128"], _iv) cipher_str = str(bytearray(cipher)) message = str(len(cipher_str)).zfill(4) + cipher_str + str(orig_len).zfill(4) + str(cmdsig) b64msg = base64.b64encode(message) print "'", b64msg, "'"
def generate_msg(command, keyfile): print ("Generating message for '%s' using '%s' ..." % (command, keyfile)) # 0. Read private key from file try: with open(keyfile, "rb") as f: pri = rsa.PrivateKey.load_pkcs1(f.read(), "PEM") except IOError: print "Error: No such key file. " sys.exit() # 1. Check the validation of command msg = ccpkt.build_msg(command) # 2. sign message and base64 encode cmdsig = rsa.sign(msg, pri, "SHA-256") # with open('keys/mrpub.pem', 'rb') as pf: # pub = rsa.PublicKey.load_pkcs1(pf.read(), "PEM") # master = rsa.verify(msg, cmdsig, pub) # if master: # print("Verify sucess") moo = slowaes.AESModeOfOperation() mode, orig_len, cipher = moo.encrypt(msg, moo.modeOfOperation["CBC"], _aes_key, moo.aes.keySize["SIZE_128"], _iv) cipher_str = str(bytearray(cipher)) message = str(len(cipher_str)).zfill(4) + cipher_str + str(orig_len).zfill(4) + str(cmdsig) b64msg = base64.b64encode(message) print "'", b64msg, "'"
def generate_signature(self, sender_private_key): message = self.sender + self.recipient + str(self.value) self.signature = sign(message.encode(), sender_private_key)
def sign(data, private_key): signature = rsa.sign(data, private_key) return base64.standard_b64encode(signature + data)