We propose to write Scheme code that unifies DSA and ECDSA which is sort of described in X9.63. The input to the code is a computational Abelian group. The 2014 Feb 8 version of this is our inspiration. Such a group is presented as (eq op I G inv n) where
eqis the equality predicate for comparing two group
elements, in case representation is not canonical
(eq a a)
(eq a b) → (eq b a)
if (eq a b) then (if φ(a) then φ(b))
opa function of type g×g→g
where g is the set of group values
(eq (op a (op b c)) (op (op a b) c))
(eq (op a b) (op b a))
Iis the group identity(eq (op I a) a)
(eq (op a I) a)
Gis some generator of the group
invis the inverse of the operation(eq (op x (inv x)) I)
nnumber of elements in groupnG = I
I don’t know whether security or other logic depends on the group being commutative.

I could be computed as (((fileVal "expt") op #f #f) G n) or (op G (inv G)) but that seems unnecessary.
n could be computed as (let c ((N 0)(g G)) (if (eq g I) N (+ 1 (c (op G g)))) but then this would not qualify for the informal term “computational group”.


A good introduction to the original signature idea.