inline v13 atomics

This commit is contained in:
AF 2022-07-26 02:09:31 +03:00
parent c1a7ab1128
commit 455ffd6063
3 changed files with 19 additions and 4 deletions

View File

@ -28,3 +28,9 @@ class IPair(IAuto, Generic[E0, E1]):
assert isinstance(v0, Mentionable)
assert isinstance(v1, Mentionable)
return cls.from_values(v0, v1)
@classmethod
def f(cls, f0: RainbowFactory[E0], f1: RainbowFactory[E1]) -> RainbowFactory['IPair[E0, E1]']:
assert isinstance(f0, RainbowFactory)
assert isinstance(f1, RainbowFactory)
return cls.factory(f0, f1)

View File

@ -2,8 +2,8 @@ import nacl.bindings
import nacl.exceptions
import nacl.signing
from rainbowadn.atomic import *
from rainbowadn.core import *
from rainbowadn.inlining import *
from .subject import *
__all__ = ('BadSignature', 'Signature',)
@ -13,12 +13,16 @@ class BadSignature(nacl.exceptions.BadSignatureError):
pass
class Signature(Atomic):
class Signature(IAtomic):
def __init__(self, source: bytes):
assert isinstance(source, bytes)
assert_eq(len(source), nacl.bindings.crypto_sign_BYTES)
self.source = source
@classmethod
def size(cls) -> int:
return nacl.bindings.crypto_sign_BYTES
@classmethod
def empty(cls) -> 'Signature':
return Signature(bytes(nacl.bindings.crypto_sign_BYTES))

View File

@ -1,18 +1,23 @@
import nacl.bindings
from nacl.public import PublicKey
from nacl.signing import VerifyKey
from rainbowadn.atomic import *
from rainbowadn.inlining import *
__all__ = ('Subject',)
class Subject(Atomic):
class Subject(IAtomic):
def __init__(self, verify_key: VerifyKey):
assert isinstance(verify_key, VerifyKey)
self.verify_key: VerifyKey = verify_key
self.public_key: PublicKey = verify_key.to_curve25519_public_key()
assert isinstance(self.public_key, PublicKey)
@classmethod
def size(cls) -> int:
return nacl.bindings.crypto_sign_PUBLICKEYBYTES
@classmethod
def _from_bytes(cls, source: bytes) -> 'Subject':
assert isinstance(source, bytes)