# @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')