Added libs
This commit is contained in:
62
fspn/utils/ecdsa_util.py
Normal file
62
fspn/utils/ecdsa_util.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from ecdsa import SigningKey, VerifyingKey, SECP256k1, keys
|
||||
from hashlib import sha256
|
||||
# from ecies import encrypt, decrypt
|
||||
|
||||
def create_keys(password:bytes) -> tuple[VerifyingKey, SigningKey]: # type: ignore
|
||||
privateKey = SigningKey.from_string(password, curve=SECP256k1)
|
||||
publicKey:VerifyingKey = privateKey.get_verifying_key()
|
||||
return (publicKey, privateKey)
|
||||
|
||||
def create_pem(fullpath, privateKey:SigningKey, publicKey:VerifyingKey):
|
||||
with open(fullpath+"privateKey.pem", "wb") as f:
|
||||
f.write(privateKey.to_pem(format="pkcs8"))
|
||||
with open(fullpath+"publicKey.pem", "wb") as f:
|
||||
f.write(publicKey.to_pem())
|
||||
|
||||
def read_pem(fullpath):
|
||||
with open(fullpath+"privateKey.pem") as f:
|
||||
privateKey = SigningKey.from_pem(f.read())
|
||||
with open(fullpath+"publicKey.pem") as f:
|
||||
publicKey = VerifyingKey.from_pem(f.read())
|
||||
return (privateKey, publicKey)
|
||||
|
||||
def sign_message(message:str, privateKey:SigningKey) -> bytes:
|
||||
return privateKey.sign(message.encode('utf-8'), hashfunc=sha256)
|
||||
|
||||
def load_signing_key(signing_key:bytes) -> SigningKey:
|
||||
return SigningKey.from_string(signing_key, curve=SECP256k1, hashfunc=sha256)
|
||||
|
||||
def get_verifying_key(signing_key:SigningKey) -> VerifyingKey:
|
||||
return signing_key.get_verifying_key()
|
||||
|
||||
def load_verifying_key(verifying_key:bytes) -> VerifyingKey:
|
||||
return VerifyingKey.from_string(verifying_key, curve=SECP256k1, hashfunc=sha256)
|
||||
|
||||
def verify_message(message:bytes, signature:bytes, publicKey:VerifyingKey) -> bool:
|
||||
try:
|
||||
return publicKey.verify(signature, message, hashfunc=sha256)
|
||||
except keys.BadSignatureError:
|
||||
return False
|
||||
|
||||
# ecdsa_vk.to_string('compressed') or vk_bytes
|
||||
# def encrypt_message(verifying_key:bytes, message:bytes):
|
||||
# return encrypt(verifying_key, message)
|
||||
|
||||
# ecdsa_sk.to_string() or sk_bytes
|
||||
# def decrypt_message(signing_key:bytes, message:bytes):
|
||||
# return decrypt(signing_key, message)
|
||||
|
||||
# password = b'#LucasGabrielVazDosSantosInacio!'
|
||||
|
||||
# vk,sk = create_keys(password)
|
||||
# import base64
|
||||
|
||||
# print(base64.b64encode(vk.to_string('compressed')).decode())
|
||||
|
||||
# pk ='AuWgGLOi4VUxYQnZzcXqtzl1nA4H4MAL+fzLgjf+TX8C'
|
||||
# message= '{"text":"Hello","public_key":"AuWgGLOi4VUxYQnZzcXqtzl1nA4H4MAL+fzLgjf+TX8C","pof":"69201","signature":null,"files":[],"networks":["000"],"datetime":"2024-10-06T07:08:30.419000Z","parents":[]}'
|
||||
# sig = 'dRAyr67oZXblKEqS9EpghhS7mbl1DOoqCF8n8krQ2KsTcV9VRK6Hc4O2A27WkdjW2ZEaalp2PbPd1ZamAMJJ/A=='
|
||||
|
||||
# pk = load_verifying_key(base64.b64decode(pk))
|
||||
# sig = base64.b64decode(sig)
|
||||
# print(verify_message(message.encode(), sig, pk))
|
||||
Reference in New Issue
Block a user