import base64
import os
from pathlib import Path
import hashlib
import nacl.signing
def sign_org_card():
current_dir = Path(os.path.realpath(__file__)).parent
orgcard_path = current_dir.joinpath("test_org_card.kc")
orgcard_data = b''
try:
with open(orgcard_path, 'rb') as f:
orgcard_data = f.read()
except Exception as e:
print(f"Couldn't open {orgcard_path}: {e}")
return
org_signing_key85 = "msvXw(nII<Qm6oBHc+92xwRI3>VFF-RcZ=7DEu3|"
key = nacl.signing.SigningKey(base64.b85decode(org_signing_key85))
hasher = hashlib.blake2b(digest_size=32)
hasher.update(orgcard_data)
orgcard_data = orgcard_data + b"Hash:BLAKE2B-256:" + base64.b85encode(hasher.digest()) + \
b"\r\n"
signed = key.sign(orgcard_data)
signature = base64.b85encode(signed.signature)
orgcard_data = orgcard_data + b"Organization-Signature:ED25519:" + signature + b"\r\n"
signedcard_path = current_dir.joinpath("test_org_card_signed.kc")
try:
with open(signedcard_path, 'wb') as f:
f.write(orgcard_data)
print(f"Saved signed data to {signedcard_path}")
except Exception as e:
print(f"Couldn't save {signedcard_path}: {e}")
return
print(orgcard_data.decode())
def sign_user_card():
current_dir = Path(os.path.realpath(__file__)).parent
usercard_path = current_dir.joinpath("test_user_card.kc")
usercard_data = b''
try:
with open(usercard_path, 'rb') as f:
usercard_data = f.read()
except Exception as e:
print(f"Couldn't open {usercard_path}: {e}")
return
org_signing_key85 = "msvXw(nII<Qm6oBHc+92xwRI3>VFF-RcZ=7DEu3|"
okey = nacl.signing.SigningKey(base64.b85decode(org_signing_key85))
signed = okey.sign(usercard_data)
signature = base64.b85encode(signed.signature)
usercard_data = usercard_data + b"Organization-Signature:ED25519:" + signature + b"\r\n"
usercard_data = usercard_data + \
b"Previous-Hash:BLAKE2B-256:5p?~_i$tLp<u5)cide0_jfVkSEw9tuaXOQK<jx1X\r\n"
hasher = hashlib.blake2b(digest_size=32)
hasher.update(usercard_data)
usercard_data = usercard_data + b"Hash:BLAKE2B-256:" + base64.b85encode(hasher.digest()) + \
b"\r\n"
user_signing_key85 = "ip52{ps^jH)t$k-9bc_RzkegpIW?}FFe~BX&<V}9"
ukey = nacl.signing.SigningKey(base64.b85decode(user_signing_key85))
signed = ukey.sign(usercard_data)
signature = base64.b85encode(signed.signature)
usercard_data = usercard_data + b"User-Signature:ED25519:" + signature + b"\r\n"
signedcard_path = current_dir.joinpath("test_user_card_signed.kc")
try:
with open(signedcard_path, 'wb') as f:
f.write(usercard_data)
print(f"Saved signed data to {signedcard_path}")
except Exception as e:
print(f"Couldn't save {signedcard_path}: {e}")
return
print(usercard_data.decode())
if __name__ == '__main__':
sign_org_card()
sign_user_card()