Skip to content

Commit 5268c48

Browse files
authored
common: trim tailing zero when calculating sign for double and float (#40)
1 parent bdc68ff commit 5268c48

File tree

32 files changed

+173
-82
lines changed

32 files changed

+173
-82
lines changed

.github/workflows/sonar.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ jobs:
3434
env:
3535
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
3636
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
37-
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=ucloud_ucloud-sdk-java
37+
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dgpg.skip -Dsonar.projectKey=ucloud_ucloud-sdk-java

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.9-release
1+
1.1.0-release

examples/generic/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<artifactId>ucloud-sdk-java</artifactId>
99
<groupId>cn.ucloud</groupId>
10-
<version>1.0.9-release</version>
10+
<version>1.1.0-release</version>
1111
</parent>
1212

1313
<modelVersion>4.0.0</modelVersion>
@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>cn.ucloud</groupId>
2020
<artifactId>ucloud-sdk-java-common</artifactId>
21-
<version>1.0.9-release</version>
21+
<version>1.1.0-release</version>
2222
</dependency>
2323
</dependencies>
2424
</project>

examples/uhost/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<artifactId>ucloud-sdk-java</artifactId>
99
<groupId>cn.ucloud</groupId>
10-
<version>1.0.9-release</version>
10+
<version>1.1.0-release</version>
1111
</parent>
1212

1313
<modelVersion>4.0.0</modelVersion>
@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>cn.ucloud</groupId>
2020
<artifactId>ucloud-sdk-java-uhost</artifactId>
21-
<version>1.0.9-release</version>
21+
<version>1.1.0-release</version>
2222
</dependency>
2323
</dependencies>
2424
</project>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<groupId>cn.ucloud</groupId>
88
<artifactId>ucloud-sdk-java</artifactId>
99
<packaging>pom</packaging>
10-
<version>1.0.9-release</version>
10+
<version>1.1.0-release</version>
1111
<modules>
1212
<module>ucloud-sdk-java-common</module>
1313
<module>ucloud-sdk-java-cube</module>

ucloud-sdk-java-common/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
<parent>
88
<artifactId>ucloud-sdk-java</artifactId>
99
<groupId>cn.ucloud</groupId>
10-
<version>1.0.9-release</version>
10+
<version>1.1.0-release</version>
1111
</parent>
1212

1313
<modelVersion>4.0.0</modelVersion>
1414
<artifactId>ucloud-sdk-java-common</artifactId>
15-
<version>1.0.9-release</version>
15+
<version>1.1.0-release</version>
1616

1717
<dependencies>
1818
<dependency>

ucloud-sdk-java-common/src/main/java/cn/ucloud/common/credential/Credential.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import org.apache.commons.codec.digest.DigestUtils;
2020

2121
import java.io.UnsupportedEncodingException;
22+
import java.math.BigDecimal;
2223
import java.security.NoSuchAlgorithmException;
24+
import java.text.DecimalFormat;
2325
import java.util.Arrays;
2426
import java.util.Map;
2527

@@ -47,10 +49,21 @@ public String verifyAc(Request request) throws UCloudException {
4749
String[] keys = params.keySet().toArray(new String[0]);
4850
Arrays.sort(keys);
4951

52+
DecimalFormat df = new DecimalFormat("#");
53+
df.setMaximumFractionDigits(Integer.MAX_VALUE);
5054
String s = "";
5155
for (String key : keys) {
5256
s = s.concat(key);
53-
s = s.concat(params.get(key).toString());
57+
Object value = params.get(key);
58+
String valueStr;
59+
if (value instanceof Double || value instanceof Float) {
60+
// If the type is double or float, we need to trim the tailing zeros
61+
// to be consistent with the json decoder.
62+
valueStr = df.format(value);
63+
} else {
64+
valueStr = value.toString();
65+
}
66+
s = s.concat(valueStr);
5467
}
5568
s = s.concat(this.privateKey);
5669

ucloud-sdk-java-common/src/test/java/cn/ucloud/common/credential/CredentialTest.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,82 @@ public void verifyAc() throws UCloudException {
6161

6262
assertEquals("cba5cf5ec4d4233d206b1b54951e3787350a642f", cred.verifyAc(request));
6363
}
64+
65+
static class DoubleRequest extends Request {
66+
DoubleRequest() { super(); }
67+
68+
@UCloudParam("Proportion")
69+
private Double proportion;
70+
71+
@UCloudParam("Region")
72+
private String region;
73+
74+
public String getRegion() {
75+
return region;
76+
}
77+
78+
public void setRegion(String region) {
79+
this.region = region;
80+
}
81+
82+
public void setProportion(Double proportion) {
83+
this.proportion = proportion;
84+
}
85+
86+
public Double getProportion() {
87+
return proportion;
88+
}
89+
}
90+
91+
@Test
92+
public void verifyAcDoubleTailingZero() throws UCloudException {
93+
Credential cred = new Credential(pubKey, priKey);
94+
Assert.assertEquals(pubKey, cred.getPublicKey());
95+
Assert.assertEquals(priKey, cred.getPrivateKey());
96+
97+
cred.setPublicKey(pubKey);
98+
cred.setPrivateKey(priKey);
99+
Assert.assertEquals(pubKey, cred.getPublicKey());
100+
Assert.assertEquals(priKey, cred.getPrivateKey());
101+
102+
DoubleRequest request = new DoubleRequest();
103+
request.setAction("DescribeUHostInstance");
104+
request.setRegion("cn-bj2");
105+
request.setProportion(35.0);
106+
107+
String ac0 = cred.verifyAc(request);
108+
109+
// You can calculate sign by:
110+
// ucloud sign --private-key 46f09bb9fab4f12dfc160dae12273d5332b5debe \
111+
// --param Action=DescribeUHostInstance --param Region=cn-bj2 \
112+
// --param Proportion=35 \
113+
// --param [email protected]
114+
assertEquals("da620b97de476947302291fc93a2d8b0710be328", ac0);
115+
}
116+
117+
@Test
118+
public void verifyAcDoubleNoneTailingZero() throws UCloudException {
119+
Credential cred = new Credential(pubKey, priKey);
120+
Assert.assertEquals(pubKey, cred.getPublicKey());
121+
Assert.assertEquals(priKey, cred.getPrivateKey());
122+
123+
cred.setPublicKey(pubKey);
124+
cred.setPrivateKey(priKey);
125+
Assert.assertEquals(pubKey, cred.getPublicKey());
126+
Assert.assertEquals(priKey, cred.getPrivateKey());
127+
128+
DoubleRequest request = new DoubleRequest();
129+
request.setAction("DescribeUHostInstance");
130+
request.setRegion("cn-bj2");
131+
request.setProportion(65.722);
132+
133+
String ac0 = cred.verifyAc(request);
134+
135+
// You can calculate sign by:
136+
// ucloud sign --private-key 46f09bb9fab4f12dfc160dae12273d5332b5debe \
137+
// --param Action=DescribeUHostInstance --param Region=cn-bj2 \
138+
// --param Proportion=65.722 \
139+
// --param [email protected]
140+
assertEquals("5e39dd48144d6a075328e56a6c5e9df6c39ae939", ac0);
141+
}
64142
}

ucloud-sdk-java-cube/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
<parent>
66
<artifactId>ucloud-sdk-java</artifactId>
77
<groupId>cn.ucloud</groupId>
8-
<version>1.0.9-release</version>
8+
<version>1.1.0-release</version>
99
</parent>
1010

1111
<modelVersion>4.0.0</modelVersion>
1212
<artifactId>ucloud-sdk-java-cube</artifactId>
13-
<version>1.0.9-release</version>
13+
<version>1.1.0-release</version>
1414

1515
<dependencies>
1616
<dependency>
1717
<groupId>cn.ucloud</groupId>
1818
<artifactId>ucloud-sdk-java-common</artifactId>
19-
<version>1.0.9-release</version>
19+
<version>1.1.0-release</version>
2020
</dependency>
2121

2222
<dependency>

ucloud-sdk-java-ipsecvpn/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
<parent>
66
<artifactId>ucloud-sdk-java</artifactId>
77
<groupId>cn.ucloud</groupId>
8-
<version>1.0.9-release</version>
8+
<version>1.1.0-release</version>
99
</parent>
1010

1111
<modelVersion>4.0.0</modelVersion>
1212
<artifactId>ucloud-sdk-java-ipsecvpn</artifactId>
13-
<version>1.0.9-release</version>
13+
<version>1.1.0-release</version>
1414

1515
<dependencies>
1616
<dependency>
1717
<groupId>cn.ucloud</groupId>
1818
<artifactId>ucloud-sdk-java-common</artifactId>
19-
<version>1.0.9-release</version>
19+
<version>1.1.0-release</version>
2020
</dependency>
2121

2222
<dependency>

0 commit comments

Comments
 (0)