43 lines
905 B
Ruby
43 lines
905 B
Ruby
class Signature
|
|
|
|
class << self
|
|
|
|
def create(key, secret)
|
|
|
|
#secret = '_ContactUs_'
|
|
#key = '{"expire":"\/Date(1422449303583)\/","key":"mo.docx1422449303571","key_id":"_ContactUs_","user_count":0}'
|
|
|
|
payload = get_hash_base64(key + secret) + '?' + key
|
|
encode = url_token_encode(payload)
|
|
|
|
end
|
|
|
|
def get_hash_base64(str)
|
|
|
|
utf8 = str.encode('utf-8')
|
|
sha256 = Digest::SHA256.digest(utf8)
|
|
base64 = Base64.strict_encode64(sha256)
|
|
|
|
end
|
|
|
|
def url_token_encode(str)
|
|
|
|
utf8 = str.encode('utf-8')
|
|
base64 = Base64.strict_encode64(utf8)
|
|
|
|
cnt = 0
|
|
base64.each_char {|c|
|
|
if c == '='
|
|
cnt += 1
|
|
end
|
|
}
|
|
|
|
signature = base64.gsub('=', '') + cnt.to_s
|
|
signature = signature.gsub('+', '-').gsub('/', '_')
|
|
signature = URI.encode(signature)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end |