| 12345678910111213141516171819202122232425262728293031 |
- import os
- from Crypto.Cipher import PKCS1_OAEP
- from Crypto.PublicKey import RSA
- def generate_random_key(bits=256):
- """
- Generate a random encryption key. Sizes is given in bits and must be in increments of 32.
- """
- if bits % 32:
- raise Exception("Invalid key size ({}). Key sizes must be in increments of 32 bits.".format(bits))
- return os.urandom(int(bits / 8))
- def encrypt_master_key(master_key, public_key):
- """
- Encrypt a secret key with the provided public RSA key.
- """
- key = RSA.importKey(public_key)
- cipher = PKCS1_OAEP.new(key)
- return cipher.encrypt(master_key)
- def decrypt_master_key(master_key_cipher, private_key):
- """
- Decrypt a secret key with the provided private RSA key.
- """
- key = RSA.importKey(private_key)
- cipher = PKCS1_OAEP.new(key)
- return cipher.decrypt(master_key_cipher)
|