Example #1
0
 def random(self, data_len):
     """Generate random bytes.
     All RNG implementations must be thread-safe."""
     data = Buffer(data_len)
     status = self._lib_vscf_key_material_rng.vscf_key_material_rng_random(self.ctx, data_len, data.c_buffer)
     VscfStatus.handle_status(status)
     return data.get_bytes()
Example #2
0
 def generate_update_token_oneparty(self):
     """Generates update token for one-party mode"""
     update_token = Buffer(Common.PHE_PRIVATE_KEY_LENGTH)
     status = self._lib_vsce_uokms_client.vsce_uokms_client_generate_update_token_oneparty(
         self.ctx, update_token.c_buffer)
     VsceStatus.handle_status(status)
     return update_token.get_bytes()
Example #3
0
 def decrypt(self, message, public_key):
     """Decrypts message"""
     plain_text = Buffer(self.decrypt_len(message=message))
     status = self._lib_vscf_group_session.vscf_group_session_decrypt(
         self.ctx, message.ctx, public_key.c_impl, plain_text.c_buffer)
     VscfStatus.handle_status(status)
     return plain_text.get_bytes()
Example #4
0
 def harden(self, identity_secret, blinded_point):
     d_identity_secret = Data(identity_secret)
     d_blinded_point = Data(blinded_point)
     hardened_point = Buffer(self.POINT_LEN)
     status = self._lib_vscf_brainkey_server.vscf_brainkey_server_harden(self.ctx, d_identity_secret.data, d_blinded_point.data, hardened_point.c_buffer)
     VscfStatus.handle_status(status)
     return hardened_point.get_bytes()
Example #5
0
 def compute_public_key_id(self, public_key):
     """Computes 8 bytes key pair id from Curve25519 (in PKCS8 or raw format) public key"""
     d_public_key = Data(public_key)
     key_id = Buffer(Common.KEY_ID_LEN)
     status = self._lib_vscr_ratchet_key_id.vscr_ratchet_key_id_compute_public_key_id(self.ctx, d_public_key.data, key_id.c_buffer)
     VscrStatus.handle_status(status)
     return key_id.get_bytes()
Example #6
0
 def mac(self, key, data):
     """Calculate MAC over given data."""
     d_key = Data(key)
     d_data = Data(data)
     mac = Buffer(self.digest_len())
     self._lib_vscf_hmac.vscf_hmac_mac(self.ctx, d_key.data, d_data.data, mac.c_buffer)
     return mac.get_bytes()
Example #7
0
 def process_encryption(self, data):
     """Process encryption of a new portion of data."""
     d_data = Data(data)
     out = Buffer(self.encryption_out_len(data_len=len(data)))
     status = self._lib_vscf_recipient_cipher.vscf_recipient_cipher_process_encryption(self.ctx, d_data.data, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #8
0
 def generate_client_private_key(self):
     """Generates client private key"""
     client_private_key = Buffer(Common.PHE_PRIVATE_KEY_LENGTH)
     status = self._lib_vsce_uokms_client.vsce_uokms_client_generate_client_private_key(
         self.ctx, client_private_key.c_buffer)
     VsceStatus.handle_status(status)
     return client_private_key.get_bytes()
Example #9
0
 def decrypt(self, message):
     """Decrypts message"""
     plain_text = Buffer(self.decrypt_len(message=message))
     status = self._lib_vscr_ratchet_session.vscr_ratchet_session_decrypt(
         self.ctx, message.ctx, plain_text.c_buffer)
     VscrStatus.handle_status(status)
     return plain_text.get_bytes()
Example #10
0
 def pack(self):
     """Return serialized message info.
     Precondition: this method can be called after "apply"."""
     message_info = Buffer(self.packed_len())
     self._lib_vscf_message_info_editor.vscf_message_info_editor_pack(
         self.ctx, message_info.c_buffer)
     return message_info.get_bytes()
Example #11
0
 def unwrap(self, pem):
     """Takes PEM data and extract binary data from it."""
     d_pem = Data(pem)
     data = Buffer(self.unwrapped_len(pem_len=len(pem)))
     status = self._lib_vscf_pem.vscf_pem_unwrap(d_pem.data, data.c_buffer)
     VscfStatus.handle_status(status)
     return data.get_bytes()
Example #12
0
 def sign_hash(self, private_key, hash_id, digest):
     """Sign data digest with a given private key."""
     d_digest = Data(digest)
     signature = Buffer(self.signature_len(private_key=private_key))
     status = self._lib_vscf_hybrid_key_alg.vscf_hybrid_key_alg_sign_hash(self.ctx, private_key.c_impl, hash_id, d_digest.data, signature.c_buffer)
     VscfStatus.handle_status(status)
     return signature.get_bytes()
Example #13
0
 def encrypt(self, public_key, data):
     """Encrypt data with a given public key."""
     d_data = Data(data)
     out = Buffer(self.encrypted_len(public_key=public_key, data_len=len(data)))
     status = self._lib_vscf_hybrid_key_alg.vscf_hybrid_key_alg_encrypt(self.ctx, public_key.c_impl, d_data.data, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #14
0
 def decrypt(self, private_key, data):
     """Decrypt given data."""
     d_data = Data(data)
     out = Buffer(self.decrypted_len(private_key=private_key, data_len=len(data)))
     status = self._lib_vscf_hybrid_key_alg.vscf_hybrid_key_alg_decrypt(self.ctx, private_key.c_impl, d_data.data, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #15
0
 def finish_padded_data_processing(self):
     """Accomplish padded data processing and return left data without a padding."""
     out = Buffer(self.finish_padded_data_processing_out_len())
     status = self._lib_vscf_random_padding.vscf_random_padding_finish_padded_data_processing(
         self.ctx, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #16
0
 def derive(self, data, key_len):
     """Derive key of the requested length from the given data."""
     d_data = Data(data)
     key = Buffer(key_len)
     self._lib_vscf_kdf2.vscf_kdf2_derive(self.ctx, d_data.data, key_len,
                                          key.c_buffer)
     return key.get_bytes()
Example #17
0
 def finish(self):
     """Accomplish encryption or decryption process."""
     out = Buffer(self.out_len(data_len=0))
     status = self._lib_vscf_aes256_cbc.vscf_aes256_cbc_finish(
         self.ctx, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #18
0
 def sign(self, private_key):
     """Accomplish signing and return signature."""
     signature = Buffer(self.signature_len(private_key=private_key))
     status = self._lib_vscf_signer.vscf_signer_sign(
         self.ctx, private_key.c_impl, signature.c_buffer)
     VscfStatus.handle_status(status)
     return signature.get_bytes()
Example #19
0
 def update(self, data):
     """Process encryption or decryption of the given data chunk."""
     d_data = Data(data)
     out = Buffer(self.out_len(data_len=len(data)))
     self._lib_vscf_aes256_cbc.vscf_aes256_cbc_update(
         self.ctx, d_data.data, out.c_buffer)
     return out.get_bytes()
Example #20
0
 def kem_decapsulate(self, encapsulated_key, private_key):
     """Decapsulate the shared key."""
     d_encapsulated_key = Data(encapsulated_key)
     shared_key = Buffer(self.kem_shared_key_len(key=private_key))
     status = self._lib_vscf_ecc.vscf_ecc_kem_decapsulate(self.ctx, d_encapsulated_key.data, private_key.c_impl, shared_key.c_buffer)
     VscfStatus.handle_status(status)
     return shared_key.get_bytes()
Example #21
0
 def compute_shared_key(self, public_key, private_key):
     """Compute shared key for 2 asymmetric keys.
     Note, computed shared key can be used only within symmetric cryptography."""
     shared_key = Buffer(self.shared_key_len(key=private_key))
     status = self._lib_vscf_ecc.vscf_ecc_compute_shared_key(self.ctx, public_key.c_impl, private_key.c_impl, shared_key.c_buffer)
     VscfStatus.handle_status(status)
     return shared_key.get_bytes()
Example #22
0
 def gather(self, len):
     """Gather entropy of the requested length."""
     out = Buffer(len)
     status = self._lib_vscf_seed_entropy_source.vscf_seed_entropy_source_gather(
         self.ctx, len, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #23
0
 def encode(self, data):
     """Encode given data to the base64 format.
     Note, written buffer is NOT null-terminated."""
     d_data = Data(data)
     str = Buffer(self.encoded_len(data_len=len(data)))
     self._lib_vscf_base64.vscf_base64_encode(d_data.data, str.c_buffer)
     return str.get_bytes()
Example #24
0
 def wrap(self, title, data):
     """Takes binary data and wraps it to the simple PEM format - no
     additional information just header-base64-footer.
     Note, written buffer is NOT null-terminated."""
     d_data = Data(data)
     pem = Buffer(self.wrapped_len(title=title, data_len=len(data)))
     self._lib_vscf_pem.vscf_pem_wrap(title, d_data.data, pem.c_buffer)
     return pem.get_bytes()
Example #25
0
 def encrypt(self, data):
     """Encrypt given data."""
     d_data = Data(data)
     out = Buffer(self.encrypted_len(data_len=len(data)))
     status = self._lib_vscf_aes256_cbc.vscf_aes256_cbc_encrypt(
         self.ctx, d_data.data, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()
Example #26
0
 def decrypt(self, cipher_text, account_key):
     """Decrypts data using account key"""
     d_cipher_text = Data(cipher_text)
     d_account_key = Data(account_key)
     plain_text = Buffer(self.decrypt_len(cipher_text_len=len(cipher_text)))
     status = self._lib_vsce_phe_cipher.vsce_phe_cipher_decrypt(self.ctx, d_cipher_text.data, d_account_key.data, plain_text.c_buffer)
     VsceStatus.handle_status(status)
     return plain_text.get_bytes()
Example #27
0
 def process_padded_data(self, data):
     """Process padded data.
     Return filtered data without padding."""
     d_data = Data(data)
     out = Buffer(len(data))
     self._lib_vscf_random_padding.vscf_random_padding_process_padded_data(
         self.ctx, d_data.data, out.c_buffer)
     return out.get_bytes()
Example #28
0
 def decode(self, str):
     """Decode given data from the base64 format."""
     d_str = Data(str)
     data = Buffer(self.decoded_len(str_len=len(str)))
     status = self._lib_vscf_base64.vscf_base64_decode(
         d_str.data, data.c_buffer)
     VscfStatus.handle_status(status)
     return data.get_bytes()
Example #29
0
 def decrypt(self, message, sender_id):
     """Decrypts message"""
     d_sender_id = Data(sender_id)
     plain_text = Buffer(self.decrypt_len(message=message))
     status = self._lib_vscr_ratchet_group_session.vscr_ratchet_group_session_decrypt(
         self.ctx, message.ctx, d_sender_id.data, plain_text.c_buffer)
     VscrStatus.handle_status(status)
     return plain_text.get_bytes()
Example #30
0
 def decrypt(self, data):
     """Decrypt given data."""
     d_data = Data(data)
     out = Buffer(self.decrypted_len(data_len=len(data)))
     status = self._lib_vscf_pkcs5_pbes2.vscf_pkcs5_pbes2_decrypt(
         self.ctx, d_data.data, out.c_buffer)
     VscfStatus.handle_status(status)
     return out.get_bytes()