aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-09-22 05:57:20 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-09-22 05:57:20 +0800
commita03b46fd258cca5721ca48533351a9f9f2622065 (patch)
tree4e00b136442e6d333aab1fcee69f569a080bb78f
parent4f63949504ac88e869b9f8ef893fc97f98752711 (diff)
downloaddexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar.gz
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar.bz2
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar.lz
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar.xz
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.tar.zst
dexon-bls-a03b46fd258cca5721ca48533351a9f9f2622065.zip
test boundary of size for deserialize
-rw-r--r--test/bls_c384_test.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/bls_c384_test.cpp b/test/bls_c384_test.cpp
index 9507a4a..c37a8ba 100644
--- a/test/bls_c384_test.cpp
+++ b/test/bls_c384_test.cpp
@@ -123,44 +123,93 @@ void blsSerializeTest()
size_t n;
size_t expectSize;
int ret;
+ const char dummyChar = '1';
+ // Id
expectSize = opUnitSize * 8;
blsIdSetInt(&id1, -1);
n = blsIdSerialize(buf, sizeof(buf), &id1);
CYBOZU_TEST_EQUAL(n, expectSize);
+
ret = blsIdDeserialize(&id2, buf, n);
CYBOZU_TEST_EQUAL(ret, 0);
CYBOZU_TEST_ASSERT(blsIdIsEqual(&id1, &id2));
+
+ ret = blsIdDeserialize(&id2, buf, n - 1);
+ CYBOZU_TEST_ASSERT(ret != 0);
+
+ memset(&id2, 0, sizeof(id2));
+ buf[n] = dummyChar;
+ ret = blsIdDeserialize(&id2, buf, n + 1);
+ CYBOZU_TEST_EQUAL(ret, 0);
+ CYBOZU_TEST_ASSERT(blsIdIsEqual(&id1, &id2));
+
n = blsIdSerialize(buf, expectSize, &id1);
CYBOZU_TEST_EQUAL(n, expectSize);
+ // SecretKey
expectSize = opUnitSize * 8;
blsSecretKeySetDecStr(&sec1, "-1", 2);
n = blsSecretKeySerialize(buf, sizeof(buf), &sec1);
CYBOZU_TEST_EQUAL(n, expectSize);
+
ret = blsSecretKeyDeserialize(&sec2, buf, n);
CYBOZU_TEST_EQUAL(ret, 0);
CYBOZU_TEST_ASSERT(blsSecretKeyIsEqual(&sec1, &sec2));
+
+ ret = blsSecretKeyDeserialize(&sec2, buf, n - 1);
+ CYBOZU_TEST_ASSERT(ret != 0);
+
+ memset(&sec2, 0, sizeof(sec2));
+ buf[n] = dummyChar;
+ ret = blsSecretKeyDeserialize(&sec2, buf, n + 1);
+ CYBOZU_TEST_EQUAL(ret, 0);
+ CYBOZU_TEST_ASSERT(blsSecretKeyIsEqual(&sec1, &sec2));
+
n = blsSecretKeySerialize(buf, expectSize, &sec1);
CYBOZU_TEST_EQUAL(n, expectSize);
+ // PublicKey
expectSize = opUnitSize * 8 * 2;
blsGetPublicKey(&pub1, &sec1);
n = blsPublicKeySerialize(buf, sizeof(buf), &pub1);
CYBOZU_TEST_EQUAL(n, expectSize);
+
ret = blsPublicKeyDeserialize(&pub2, buf, n);
CYBOZU_TEST_EQUAL(ret, 0);
CYBOZU_TEST_ASSERT(blsPublicKeyIsEqual(&pub1, &pub2));
+
+ ret = blsPublicKeyDeserialize(&pub2, buf, n - 1);
+ CYBOZU_TEST_ASSERT(ret != 0);
+
+ memset(&pub2, 0, sizeof(pub2));
+ buf[n] = dummyChar;
+ ret = blsPublicKeyDeserialize(&pub2, buf, n + 1);
+ CYBOZU_TEST_EQUAL(ret, 0);
+ CYBOZU_TEST_ASSERT(blsPublicKeyIsEqual(&pub1, &pub2));
+
n = blsPublicKeySerialize(buf, expectSize, &pub1);
CYBOZU_TEST_EQUAL(n, expectSize);
+ // Signature
expectSize = opUnitSize * 8;
blsSign(&sig1, &sec1, "abc", 3);
n = blsSignatureSerialize(buf, sizeof(buf), &sig1);
CYBOZU_TEST_EQUAL(n, expectSize);
+
ret = blsSignatureDeserialize(&sig2, buf, n);
CYBOZU_TEST_EQUAL(ret, 0);
CYBOZU_TEST_ASSERT(blsSignatureIsEqual(&sig1, &sig2));
+
+ ret = blsSignatureDeserialize(&sig2, buf, n - 1);
+ CYBOZU_TEST_ASSERT(ret != 0);
+
+ memset(&sig2, 0, sizeof(sig2));
+ buf[n] = dummyChar;
+ ret = blsSignatureDeserialize(&sig2, buf, n + 1);
+ CYBOZU_TEST_EQUAL(ret, 0);
+ CYBOZU_TEST_ASSERT(blsSignatureIsEqual(&sig1, &sig2));
+
n = blsSignatureSerialize(buf, expectSize, &sig1);
CYBOZU_TEST_EQUAL(n, expectSize);
}