+SIGSTRING_CACHE = LFUCache(1024)
+
+def sign_signing_string(sigstring, key):
+ if sigstring in SIGSTRING_CACHE:
+ return SIGSTRING_CACHE[sigstring]
+
+ pkcs = PKCS1_v1_5.new(key)
+ h = SHA256.new()
+ h.update(sigstring.encode('ascii'))
+ sigdata = pkcs.sign(h)
+
+ sigdata = base64.b64encode(sigdata)
+ SIGSTRING_CACHE[sigstring] = sigdata.decode('ascii')
+
+ return SIGSTRING_CACHE[sigstring]
+
+