refactor getLittleEndian

2merge^2
MITSUNARI Shigeo 4 years ago
parent f83f1ccb72
commit 35b2682699
  1. 16
      include/mcl/fp.hpp
  2. 4
      include/mcl/impl/bn_c_impl.hpp

@ -410,21 +410,23 @@ public:
write buf[0] = 0 and return 1 if the value is 0 write buf[0] = 0 and return 1 if the value is 0
return written size if success else 0 return written size if success else 0
*/ */
size_t getLittleEndian(void *buf, size_t maxBufSize) const size_t getLittleEndian(uint8_t *buf, size_t maxN) const
{ {
fp::Block b; fp::Block b;
getBlock(b); getBlock(b);
const uint8_t *src = (const uint8_t *)b.p; size_t n = sizeof(fp::Unit) * b.n;
uint8_t *dst = (uint8_t *)buf; uint8_t *t = (uint8_t*)CYBOZU_ALLOCA(n);
size_t n = b.n * sizeof(b.p[0]); if (!fp::convertArrayAsLE(t, n, b.p, b.n)) {
return 0;
}
while (n > 0) { while (n > 0) {
if (src[n - 1]) break; if (t[n - 1]) break;
n--; n--;
} }
if (n == 0) n = 1; // zero if (n == 0) n = 1; // zero
if (maxBufSize < n) return 0; if (maxN < n) return 0;
for (size_t i = 0; i < n; i++) { for (size_t i = 0; i < n; i++) {
dst[i] = src[i]; buf[i] = t[i];
} }
return n; return n;
} }

@ -171,7 +171,7 @@ int mclBnFr_setBigEndianMod(mclBnFr *x, const void *buf, mclSize bufSize)
mclSize mclBnFr_getLittleEndian(void *buf, mclSize maxBufSize, const mclBnFr *x) mclSize mclBnFr_getLittleEndian(void *buf, mclSize maxBufSize, const mclBnFr *x)
{ {
return cast(x)->getLittleEndian(buf, maxBufSize); return cast(x)->getLittleEndian((uint8_t*)buf, maxBufSize);
} }
int mclBnFr_setLittleEndianMod(mclBnFr *x, const void *buf, mclSize bufSize) int mclBnFr_setLittleEndianMod(mclBnFr *x, const void *buf, mclSize bufSize)
{ {
@ -749,7 +749,7 @@ int mclBnFp_setBigEndianMod(mclBnFp *x, const void *buf, mclSize bufSize)
mclSize mclBnFp_getLittleEndian(void *buf, mclSize maxBufSize, const mclBnFp *x) mclSize mclBnFp_getLittleEndian(void *buf, mclSize maxBufSize, const mclBnFp *x)
{ {
return cast(x)->getLittleEndian(buf, maxBufSize); return cast(x)->getLittleEndian((uint8_t*)buf, maxBufSize);
} }
int mclBnFp_isValid(const mclBnFp *x) int mclBnFp_isValid(const mclBnFp *x)
{ {

Loading…
Cancel
Save