code: def crypto_core_ed25519_add(p, q):
      
      ensure(isinstance(p, bytes) and isinstance(q, bytes) and
             len(p) == crypto_core_ed25519_BYTES and
             len(q) == crypto_core_ed25519_BYTES,
             'Each point must be a {} long bytes sequence'.format(
             'crypto_core_ed25519_BYTES'),
             raising=exc.TypeError)
  
      r = ffi.new("unsigned char[]", crypto_core_ed25519_BYTES)
  
      rc = lib.crypto_core_ed25519_add(r, p, q)
      ensure(rc == 0,
             'Unexpected library error',
             raising=exc.RuntimeError)
  
      return ffi.buffer(r, crypto_core_ed25519_BYTES)[:]
docs: Add two points on the edwards25519 curve.
  
      :param p: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence
                representing a point on the edwards25519 curve
      :type p: bytes
      :param q: a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence
                representing a point on the edwards25519 curve
      :type q: bytes
      :return: a point on the edwards25519 curve represented as
               a :py:data:`.crypto_core_ed25519_BYTES` long bytes sequence
      :rtype: bytes