# @file fors_sk_pk_0.py (2023-03-16T14:29Z)
# @author David Ireland <www.di-mgt.com.au/contact>
# @copyright 2023 DI Management Services Pty Ltd
# @license Apache-2.0

"""Compute the 64 FORS secret and public keys for the first tree."""

# Import our libraries to manage ADRS and SHA-256 hash functions
from spx_adrs import Adrs
from spx_sha256 import PRF, F

PKseed = 'B505D7CFAD1B497499323C8686325E47'
SKseed = '7C9935A0B07694AA0C6D10E4DB6B1ADD'
t = 64

leaves = []

# Set up ADRS object
adrs = Adrs(Adrs.FORS_TREE, layer=0)
adrs.setTreeAddress(0x28daecdc86eb8761)
adrs.setKeyPairAddress(6)

# Compute FORS sk and pk values for first tree (i = 0)
i = 0
for j in range(t):
    treeindex = i * t + j
    adrs.setTreeIndex(treeindex)
    print(f"ADRS={adrs.toHex()}")
    sk = PRF(SKseed, adrs.toHex())
    print(f"fors_sk[{i}][{j}]={sk}")
    pk = F(PKseed, adrs.toHex(), sk)
    print(f"fors_pk[{i}][{j}]={pk}")
    leaves.append(pk)

# [print(leaf) for leaf in leaves]
print("leaves=", leaves, sep='\n')