summaryrefslogtreecommitdiff
path: root/src/pubkey.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pubkey.h')
-rw-r--r--src/pubkey.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/pubkey.h b/src/pubkey.h
index 7b80752..ef7e322 100644
--- a/src/pubkey.h
+++ b/src/pubkey.h
@@ -38,6 +38,8 @@ public:
template<class T>
Stored<Signed<T>> sign(const Stored<T> &) const;
+ template<class T>
+ Stored<Signed<T>> signAdd(const Stored<Signed<T>> &) const;
private:
vector<uint8_t> sign(const Digest &) const;
@@ -89,6 +91,16 @@ Stored<Signed<T>> SecretKey::sign(const Stored<T> & val) const
return st.store(Signed(val, { sig }));
}
+template<class T>
+Stored<Signed<T>> SecretKey::signAdd(const Stored<Signed<T>> & val) const
+{
+ auto st = val.ref().storage();
+ auto sig = st.store(Signature(pub(), sign(val.ref().digest())));
+ auto sigs = val->sigs;
+ sigs.push_back(st.store(Signature(pub(), sign(val->data.ref().digest()))));
+ return st.store(Signed(val->data, sigs));
+}
+
template<typename T>
Signed<T> Signed<T>::load(const Ref & ref)
{