VXEdDSA imzalama algoritması, XEdDSA ile aynı girdileri alır. Çıktı iki değerden oluşur. Birincisi, bir imzadır (V || h || s); bu, V bir noktayı, h ve s ise q modülünde tamsayıları kodlayacak biçimde 3b bit uzunluğunda bir bayt dizisidir. İkincisi, V çıktısının cofactor c ile çarpılmasıyla elde edilen ve uzunluğu b bite eşit olan bir VRF çıktı bayt dizisi v'dir.
VXEdDSA doğrulama algoritması, XEdDSA ile aynı girdileri alır; ancak XEdDSA imzası yerine bir VXEdDSA imzası kullanılır. VXEdDSA doğrulaması başarılı olursa, uzunluğu b bite eşit olan bir VRF çıktı bayt dizisi v döndürür; aksi takdirde yanlış döndürür.
Aşağıda vxeddsa_sign ve vxeddsa_verify işlevleri için sözde kod verilmiştir.
vxeddsa_sign(k, M, Z):
A, a = calculate_key_pair(k)
B_v = hash_to_point(A || M)
V = aB_v
r = hash_3(a || V || Z) (mod q)
R = rB
R_v = rB_v
h = hash_4(A || V || R || R_v || M) (mod q)
s = r + ha (mod q)
v = hash_5(cV) (mod 2^b)
return (V || h || s), v
vxeddsa_verify(u, M, (V || h || s)):
if u >= p or V.y >= 2^|p| or h >= 2^|q| or s >= 2^|q|:
return false
A = convert_mont(u)
B_v = hash_to_point(A || M)
if not on_curve(A) or not on_curve(V):
return false
if cA == I or cV == I or B_v == I:
return false
R = sB - hA
R_v = sB_v - hV
h_check = hash_4(A || V || R || R_v || M) (mod q)
if bytes_equal(h, h_check):
v = hash_5(cV) (mod 2^b)
return v
return false