def schnorr_partial_sign(self, msg, privnonce, pubnonce_others,
                             raw=False, digest=hashlib.sha256):
        """
        Produce a partial Schnorr signature, which can be combined using
        schnorr_partial_combine to end up with a full signature that is
        verifiable using PublicKey.schnorr_verify.

        To combine pubnonces, use PublicKey.combine.

        Do not pass the pubnonce produced for the respective privnonce;
        combine the pubnonces from other signers and pass that instead.
        """
        if not HAS_SCHNORR:
            raise Exception("secp256k1_schnorr not enabled")

        msg32 = _hash32(msg, raw, digest)
        sig64 = ffi.new('char [64]')

        res = lib.secp256k1_schnorr_partial_sign(
            self.ctx, sig64, msg32, self.private_key,
            pubnonce_others, privnonce)
        if res <= 0:
            raise Exception('failed to partially sign ({})'.format(res))

        return bytes(ffi.buffer(sig64, 64))
def schnorr_partial_sign ( self , msg , privnonce , pubnonce_others , raw = False , digest = hashlib . sha256 ) : if not HAS_SCHNORR : raise Exception ( "secp256k1_schnorr not enabled" ) msg32 = _hash32 ( msg , raw , digest ) sig64 = ffi . new ( 'char [64]' ) res = lib . secp256k1_schnorr_partial_sign ( self . ctx , sig64 , msg32 , self . private_key , pubnonce_others , privnonce ) if res <= 0 : raise Exception ( 'failed to partially sign ({})' . format ( res ) ) return bytes ( ffi . buffer ( sig64 , 64 ) )
Produce a partial Schnorr signature, which can be combined using
        schnorr_partial_combine to end up with a full signature that is
        verifiable using PublicKey.schnorr_verify.

        To combine pubnonces, use PublicKey.combine.

        Do not pass the pubnonce produced for the respective privnonce;
        combine the pubnonces from other signers and pass that instead.