aboutsummaryrefslogtreecommitdiffstats
path: root/src/bls_if.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bls_if.cpp')
-rw-r--r--src/bls_if.cpp37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/bls_if.cpp b/src/bls_if.cpp
index 3bab145..7d2d78a 100644
--- a/src/bls_if.cpp
+++ b/src/bls_if.cpp
@@ -26,6 +26,16 @@ int setStrT(Outer *p, const char *buf, size_t bufSize)
return 1;
}
+size_t checkAndCopy(char *buf, size_t maxBufSize, const std::string& s)
+{
+ if (s.size() >= maxBufSize) {
+ return 0;
+ }
+ memcpy(buf, s.c_str(), s.size());
+ buf[s.size()] = '\0';
+ return s.size();
+}
+
template<class Inner, class Outer>
size_t getStrT(const Outer *p, char *buf, size_t maxBufSize)
try
@@ -33,12 +43,7 @@ size_t getStrT(const Outer *p, char *buf, size_t maxBufSize)
std::ostringstream oss;
oss << *(const Inner*)p;
std::string s = oss.str();
- if (s.size() > maxBufSize) {
- fprintf(stderr, "err getStrT size is small %d %d\n", (int)s.size(), (int)maxBufSize);
- return 0;
- }
- memcpy(buf, s.c_str(), s.size());
- return s.size();
+ return checkAndCopy(buf, maxBufSize, s);
} catch (std::exception&) {
return 0;
}
@@ -79,6 +84,26 @@ size_t blsGetOpUnitSize()
return bls::getOpUnitSize();
}
+int blsGetCurveOrder(char *buf, size_t maxBufSize)
+ try
+{
+ std::string s;
+ bls::getCurveOrder(s);
+ return checkAndCopy(buf, maxBufSize, s);
+} catch (std::exception&) {
+ return 0;
+}
+
+int blsGetFieldOrder(char *buf, size_t maxBufSize)
+ try
+{
+ std::string s;
+ bls::getFieldOrder(s);
+ return checkAndCopy(buf, maxBufSize, s);
+} catch (std::exception&) {
+ return 0;
+}
+
blsId *blsIdCreate()
{
return createT<bls::Id, blsId>();