Add derive_nullifier() method

This commit is contained in:
therealyingtong 2021-05-09 13:14:21 +08:00
parent 8ce3cfb8d9
commit 77f1299d9b
1 changed files with 13 additions and 4 deletions

View File

@ -3,8 +3,9 @@ import sys; assert sys.version_info[0] >= 3, "Python 3 required."
from pyblake2 import blake2b, blake2s
from orchard_generators import SPENDING_KEY_BASE, group_hash
from orchard_generators import NULLIFIER_K_BASE, SPENDING_KEY_BASE, group_hash
from orchard_pallas import Fp, Scalar, Point
from orchard_poseidon_hash import poseidon_hash
from orchard_merkle_tree import MERKLE_DEPTH
from orchard_commitments import commit_ivk, note_commit
from utils import leos2bsp, leos2ip, i2leosp
@ -25,7 +26,7 @@ def to_base(buf):
# PRFs and hashes
#
def prf_expand(sk, t):
def prf_expand(sk: bytes, t: bytes):
digest = blake2b(person=b'Zcash_ExpandSeed')
digest.update(sk)
digest.update(t)
@ -37,6 +38,14 @@ def diversify_hash(d):
P = group_hash(b'z.cash:Orchard-gd', b'')
return P
def prf_nf_orchard(nk, rho):
return poseidon_hash(nk, rho)
def derive_nullifier(nk, rho: Fp, psi: Fp, cm):
scalar = to_base(prf_nf_orchard(nk, rho)) + psi # addition mod p
point = NULLIFIER_K_BASE * to_scalar(scalar) + cm
return point.extract()
#
# Key components
#
@ -101,7 +110,7 @@ def main():
note_v,
note_rho,
note_psi)
note_nf = b"0"*32 #note_nullifier(fvk.nk(), note_cm)
note_nf = derive_nullifier(fvk.nk, note_rho, note_psi, note_cm)
test_vectors.append({
'sk': sk.data,
'ask': bytes(sk.ask),
@ -115,7 +124,7 @@ def main():
'note_v': note_v,
'note_r': bytes(note_r),
'note_cmx': bytes(note_cm.extract()),
'note_nf': note_nf,
'note_nf': bytes(note_nf),
})
render_tv(