# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import absolute_import, division, print_function from nacl import exceptions as exc from nacl._sodium import ffi, lib from nacl.exceptions import ensure has_crypto_scalarmult_ed25519 = bool(lib.PYNACL_HAS_CRYPTO_SCALARMULT_ED25519) crypto_scalarmult_BYTES = lib.crypto_scalarmult_bytes() crypto_scalarmult_SCALARBYTES = lib.crypto_scalarmult_scalarbytes() crypto_scalarmult_ed25519_BYTES = 0 crypto_scalarmult_ed25519_SCALARBYTES = 0 if has_crypto_scalarmult_ed25519: crypto_scalarmult_ed25519_BYTES = lib.crypto_scalarmult_ed25519_bytes() crypto_scalarmult_ed25519_SCALARBYTES = ( lib.crypto_scalarmult_ed25519_scalarbytes()) def crypto_scalarmult_base(n): """ Computes and returns the scalar product of a standard group element and an integer ``n``.
# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import absolute_import, division, print_function from nacl import exceptions as exc from nacl._sodium import ffi, lib from nacl.utils import ensure crypto_scalarmult_BYTES = lib.crypto_scalarmult_bytes() crypto_scalarmult_SCALARBYTES = lib.crypto_scalarmult_scalarbytes() def crypto_scalarmult_base(n): """ Computes and returns the scalar product of a standard group element and an integer ``n``. :param n: bytes :rtype: bytes """ q = ffi.new("unsigned char[]", crypto_scalarmult_BYTES) rc = lib.crypto_scalarmult_base(q, n) ensure(rc == 0,