|
123456789101112131415161718192021222324252627282930313233343536 |
- # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
- # MIT License. See license.txt
-
- from __future__ import unicode_literals
- import hmac
- import urllib
-
- import webnotes
- from webnotes.utils import cstr
-
- def get_url(params, nonce, secret=None):
- signature = get_signature(params, nonce, secret)
- params['signature'] = signature
- return ''.join([webnotes.local.request.url_root, '?', urllib.urlencode(params)])
-
- def get_signature(params, nonce, secret=None):
- params = "".join((cstr(p) for p in params))
- if not secret:
- secret = webnotes.local.conf.get("secret") or "secret"
-
- signature = hmac.new(str(nonce))
- signature.update(secret)
- signature.update(params)
- return signature.hexdigest()
-
- def verify_using_bean(bean, signature, cmd):
- controller = bean.get_controller()
- params = controller.get_signature_params()
- params["cmd"] = cmd
- return signature == get_signature(params, controller.get_nonce())
-
- def get_url_using_bean(bean, cmd):
- controller = bean.get_controller()
- params = controller.get_signature_params()
- params["cmd"] = cmd
- return get_url(params, controller.get_nonce())
|