def dsa_to_dh_public(dsa_public_key): out = ctypes.create_string_buffer(c_libsodium.crypto_scalarmult_bytes()) __libsodium_check(c_libsodium.crypto_sign_ed25519_pk_to_curve25519( out, dsa_public_key)) return out.raw