yinxing
Version:
133 lines (103 loc) • 3.57 kB
JavaScript
/*
https://sign-1252957949.cos.ap-guangzhou.myqcloud.com/index.html
used...
<script src="js/superagent.js"></script>
<script src="js/crypto-js/crypto-js.js"></script>
https://www.bootcdn.cn/crypto-js/
https://github.com/apigateway-demo/qcloud-apigateway-sign-demo-js/blob/master/demo.js
*/
SERVER1="https://service-hc5rz9qa-1252957949.gz.apigw.tencentcs.com/release/"
SERVER="https://service-hc5rz9qa-1252957949.gz.apigw.tencentcs.com/release/sec"
SECRETID = "AKIDEOJ44ea4y6afWpIrIzdcuYV52T81dHvqVKsD"
SECRETKEY = "k66d99m4gs9f05x6vqgp2yrkrvpdemhhpnhj68FX"
SOURCE="ccc"
//'Sat, 15 Feb 2020 12:33:40 GMT'
var gmt_now=()=>new Date().toGMTString()
//sha1=(a,b)=>hmac('sha1',a,b,'base64')
sha1=(b,a)=>CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(a,b))
/*
{
Source: 'ccc',
Date: 'Sat, 15 Feb 2020 13:07:19 GMT',
Authorization: 'hmac id="AKIDEOJ44ea4y6afWpIrIzdcuYV52T81dHvqVKsD", algorithm="hmac-sha1", headers="date source", signature="aSqvktrLNYBwKDeMS43788rJ4rU="'
}
*/
const getSimpleSign =(dateTime=gmt_now(),source=SOURCE, SecretId=SECRETID, SecretKey=SECRETKEY)=>{
var auth = "hmac id=\"" + SecretId + "\", algorithm=\"hmac-sha1\", headers=\"date source\", signature=\"";
var signStr = "date: " + dateTime + "\n" + "source: " + source;
const sign = auth + sha1(SecretKey,signStr) + "\""
return {
"Source":source,
"Date":dateTime,
"Authorization":sign
}
}
const getSimpleSign1 =(dateTime=gmt_now(),source=SOURCE, SecretId=SECRETID, SecretKey=SECRETKEY)=>{
var auth = "hmac id=\"" + SecretId + "\", algorithm=\"hmac-sha1\", headers=\"x-date source\", signature=\"";
var signStr = "x-date: " + dateTime + "\n" + "source: " + source;
const sign = auth + sha1(SecretKey,signStr) + "\""
return {
"Source":source,
"X-Date":dateTime,
"Authorization":sign
}
}
const get=(u=SERVER,d={})=>superagent
.get(u)
.set(getSimpleSign())
.query(d)
.type('json')
const get1=(u=SERVER,d={})=>superagent
.get(u)
.set(getSimpleSign1())
.query(d)
.type('json')
const get2=(d={},h={},u=SERVER)=>superagent
.get(u)
.set(h)
.query(d)
.type('json')
const test=async ()=>{
s0='LBxi4Eilgk37PtaY7475b1GFo2k='
s1=sha1('x','y')
console.log('sha1 ok?',s0==s1)
t='Sat, 15 Feb 2020 13:07:19 GMT'
h1={
"Source": 'ccc',
"Date": 'Sat, 15 Feb 2020 13:07:19 GMT',
"Authorization": 'hmac id="AKIDEOJ44ea4y6afWpIrIzdcuYV52T81dHvqVKsD", algorithm="hmac-sha1", headers="date source", signature="aSqvktrLNYBwKDeMS43788rJ4rU="'
}
h=getSimpleSign(t)
ok=h.Authorization == h1.Authorization
console.log('ok?',ok,)
a=getSimpleSign1()
console.table([h,h1,a])
b=getSimpleSign()
console.log(b)
r=await get1()
console.log(r.body)
return r
}
gen=async ()=>{
let s=getSimpleSign1()
let s1=JSON.stringify(s)
document.querySelector('#sign').value=s1
let r=await get2({x:1,y:2},s)
console.log(r.body)
}
reset_time=()=>{
document.querySelector('#time').value=gmt_now()
}
gen1=async()=>{
let SecretId=document.querySelector('#SECRETID').value
let SecretKey=document.querySelector('#SECRETKEY').value
let source=document.querySelector('#SOURCE').value
let dateTime=document.querySelector('#time').value
let s=getSimpleSign1(dateTime,source, SecretId, SecretKey)
let s1=JSON.stringify(s)
document.querySelector('#sign1').value=s1
let r=await get2({x:1,y:2},s,SERVER)
console.log(r.body)
}
reset_time()
test()