| 58 | |
| 59 | |
| 60 | class RSAKeyWrapper: |
| 61 | def __init__(self, kid): |
| 62 | self.private_key = generate_private_key(public_exponent=65537, |
| 63 | key_size=2048, |
| 64 | backend=default_backend()) |
| 65 | self.public_key = self.private_key.public_key() |
| 66 | self.kid = 'local:' + kid |
| 67 | |
| 68 | def wrap_key(self, key, algorithm='RSA'): |
| 69 | if algorithm == 'RSA': |
| 70 | return self.public_key.encrypt(key, |
| 71 | OAEP( |
| 72 | mgf=MGF1(algorithm=SHA1()), |
| 73 | algorithm=SHA1(), |
| 74 | label=None) |
| 75 | ) |
| 76 | else: |
| 77 | raise ValueError(_ERROR_UNKNOWN_KEY_WRAP_ALGORITHM) |
| 78 | |
| 79 | def unwrap_key(self, key, algorithm): |
| 80 | if algorithm == 'RSA': |
| 81 | return self.private_key.decrypt(key, |
| 82 | OAEP( |
| 83 | mgf=MGF1(algorithm=SHA1()), |
| 84 | algorithm=SHA1(), |
| 85 | label=None) |
| 86 | ) |
| 87 | else: |
| 88 | raise ValueError(_ERROR_UNKNOWN_KEY_WRAP_ALGORITHM) |
| 89 | |
| 90 | def get_key_wrap_algorithm(self): |
| 91 | return 'RSA' |
| 92 | |
| 93 | def get_kid(self): |
| 94 | return self.kid |
| 95 | |
| 96 | |
| 97 | class BlobEncryptionSamples(): |
no outgoing calls
no test coverage detected