@@ -1318,6 +1318,7 @@ def sign_deterministic(
13181318        hashfunc = None ,
13191319        sigencode = sigencode_string ,
13201320        extra_entropy = b"" ,
1321+         accelerate = False ,
13211322    ):
13221323        """ 
13231324        Create signature over data. 
@@ -1354,6 +1355,10 @@ def sign_deterministic(
13541355            number generator used in the RFC6979 process. Entirely optional. 
13551356            Ignored with EdDSA. 
13561357        :type extra_entropy: :term:`bytes-like object` 
1358+         :param accelerate: an indicator for ECDSA sign operation to return 
1359+             an ECPoint instead of a number of "r" parameter. 
1360+             Applicable only for ECDSA key. 
1361+         :type accelerate: boolean 
13571362
13581363        :return: encoded signature over `data` 
13591364        :rtype: bytes or sigencode function dependent type 
@@ -1373,6 +1378,7 @@ def sign_deterministic(
13731378            sigencode = sigencode ,
13741379            extra_entropy = extra_entropy ,
13751380            allow_truncate = True ,
1381+             accelerate = accelerate ,
13761382        )
13771383
13781384    def  sign_digest_deterministic (
@@ -1382,6 +1388,7 @@ def sign_digest_deterministic(
13821388        sigencode = sigencode_string ,
13831389        extra_entropy = b"" ,
13841390        allow_truncate = False ,
1391+         accelerate = False ,
13851392    ):
13861393        """ 
13871394        Create signature for digest using the deterministic RFC6979 algorithm. 
@@ -1417,6 +1424,10 @@ def sign_digest_deterministic(
14171424            bigger bit-size than the order of the curve, the extra bits (at 
14181425            the end of the digest) will be truncated. Use it when signing 
14191426            SHA-384 output using NIST256p or in similar situations. 
1427+         :param accelerate: an indicator for ECDSA sign operation to return 
1428+             an ECPoint instead of a number of "r" parameter. 
1429+             Applicable only for ECDSA key. 
1430+         :type accelerate: boolean 
14201431
14211432        :return: encoded signature for the `digest` hash 
14221433        :rtype: bytes or sigencode function dependent type 
@@ -1447,6 +1458,7 @@ def simple_r_s(r, s, order):
14471458                    sigencode = simple_r_s ,
14481459                    k = k ,
14491460                    allow_truncate = allow_truncate ,
1461+                     accelerate = accelerate ,
14501462                )
14511463                break 
14521464            except  RSZeroError :
@@ -1462,6 +1474,7 @@ def sign(
14621474        sigencode = sigencode_string ,
14631475        k = None ,
14641476        allow_truncate = True ,
1477+         accelerate = False ,
14651478    ):
14661479        """ 
14671480        Create signature over data. 
@@ -1525,6 +1538,10 @@ def sign(
15251538            leak the key. Caller should try a better entropy source, retry with 
15261539            different ``k``, or use the 
15271540            :func:`~SigningKey.sign_deterministic` in such case. 
1541+         :param accelerate: an indicator for ECDSA sign operation to return 
1542+             an ECPoint instead of a number of "r" parameter. 
1543+             Applicable only for ECDSA key. 
1544+         :type accelerate: boolean 
15281545
15291546        :return: encoded signature of the hash of `data` 
15301547        :rtype: bytes or sigencode function dependent type 
@@ -1534,7 +1551,9 @@ def sign(
15341551        if  isinstance (self .curve .curve , CurveEdTw ):
15351552            return  self .sign_deterministic (data )
15361553        h  =  hashfunc (data ).digest ()
1537-         return  self .sign_digest (h , entropy , sigencode , k , allow_truncate )
1554+         return  self .sign_digest (
1555+             h , entropy , sigencode , k , allow_truncate , accelerate 
1556+         )
15381557
15391558    def  sign_digest (
15401559        self ,
@@ -1543,6 +1562,7 @@ def sign_digest(
15431562        sigencode = sigencode_string ,
15441563        k = None ,
15451564        allow_truncate = False ,
1565+         accelerate = False ,
15461566    ):
15471567        """ 
15481568        Create signature over digest using the probabilistic ECDSA algorithm. 
@@ -1579,6 +1599,10 @@ def sign_digest(
15791599            leak the key. Caller should try a better entropy source, retry with 
15801600            different 'k', or use the 
15811601            :func:`~SigningKey.sign_digest_deterministic` in such case. 
1602+         :param accelerate: an indicator for ECDSA sign operation to return 
1603+             an ECPoint instead of a number of "r" parameter. 
1604+             Applicable only for ECDSA key. 
1605+         :type accelerate: boolean 
15821606
15831607        :return: encoded signature for the `digest` hash 
15841608        :rtype: bytes or sigencode function dependent type 
@@ -1591,10 +1615,10 @@ def sign_digest(
15911615            self .curve ,
15921616            allow_truncate ,
15931617        )
1594-         r , s  =  self .sign_number (number , entropy , k )
1618+         r , s  =  self .sign_number (number , entropy , k ,  accelerate )
15951619        return  sigencode (r , s , self .privkey .order )
15961620
1597-     def  sign_number (self , number , entropy = None , k = None ):
1621+     def  sign_number (self , number , entropy = None , k = None ,  accelerate = False ):
15981622        """ 
15991623        Sign an integer directly. 
16001624
@@ -1613,6 +1637,10 @@ def sign_number(self, number, entropy=None, k=None):
16131637            leak the key. Caller should try a better entropy source, retry with 
16141638            different 'k', or use the 
16151639            :func:`~SigningKey.sign_digest_deterministic` in such case. 
1640+         :param accelerate: an indicator for ECDSA sign operation to return 
1641+             an ECPoint instead of a number of "r" parameter. 
1642+             Applicable only for ECDSA key. 
1643+         :type accelerate: boolean 
16161644
16171645        :return: the "r" and "s" parameters of the signature 
16181646        :rtype: tuple of ints 
@@ -1627,5 +1655,5 @@ def sign_number(self, number, entropy=None, k=None):
16271655            _k  =  randrange (order , entropy )
16281656
16291657        assert  1  <=  _k  <  order 
1630-         sig  =  self .privkey .sign (number , _k )
1658+         sig  =  self .privkey .sign (number , _k ,  accelerate )
16311659        return  sig .r , sig .s 
0 commit comments