def special_signing(
    kL, kR, A, M
):  # private/secret key left and right sides kL & kR, public key A, and message M in bytes
    r = h512(kR + M)

    r = int.from_bytes(r, 'little') % ed25519.l  # base order n
    R = ed25519.encodepoint(ed25519.scalarmultbase(r))
    x = int.from_bytes(h512(R + A + M), 'little')
    S = ed25519.encodeint((r + (x * int.from_bytes(kL, 'little'))) % ed25519.l)
    return R + S
예제 #2
0
def intToHex(i):
    return binascii.hexlify(ed25519.encodeint(i))  #hexlify does bytes to hex
예제 #3
0
def Signature(m, sk):
  #note this seems to return nicely sized version of the signature
  #contrast with, i.e. tweetnacl..
  sk2 = ed25519.encodeint(MiniNero.hexToInt(sk))
  pk = ed25519.publickey(sk2)
  return binascii.hexlify(ed25519.signature(m, sk2, pk))
예제 #4
0
def HexSigningPubKey(s):
  return binascii.hexlify(ed25519.publickey(ed25519.encodeint(MiniNero.hexToInt(s))))
예제 #5
0
def Signature(m, sk):
  sk2 = ed25519.encodeint(MiniNero.hexToInt(sk))
  pk = ed25519.publickey(sk2)
  return binascii.hexlify(ed25519.signature(m, sk2, pk))
예제 #6
0
def HexSigningPubKey(s):
  return binascii.hexlify(ed25519.publickey(ed25519.encodeint(MiniNero.hexToInt(s))))
예제 #7
0
def Signature(m, sk):
  #note this seems to return nicely sized version of the signature
  #contrast with, i.e. tweetnacl..
  sk2 = ed25519.encodeint(MiniNero.hexToInt(sk))
  pk = ed25519.publickey(sk2)
  return binascii.hexlify(ed25519.signature(m, sk2, pk))
def Signature(m, sk):
    sk2 = ed25519.encodeint(MiniNero.hexToInt(sk))
    pk = ed25519.publickey(sk2)
    return binascii.hexlify(ed25519.signature(m, sk2, pk))
예제 #9
0
def intToHex(i):
    return binascii.hexlify(ed25519.encodeint(i)) #hexlify does bytes to hex
예제 #10
0
def int2hex(int):
    ## converts an integer to a little endian encoded hex string
    return hexlify(ed25519.encodeint(int))
예제 #11
0
import ed25519

sk = 32 * chr(0)
pk = ed25519.publickey(sk)
print "publickey for 0 is", pk.encode('hex')

for i in [0, 1, 10]:
    print "encodeint %d = %s" % (i, ed25519.encodeint(i).encode('hex'))

for p in [
    (0, 0), (1, 1), (10, 0), (1, 10),
    (9639205628789703341510410801487549615560488670885798085067615194958049462616,
     18930617471878267742194159801949745215346600387277955685031939302387136031291
     )
]:
    print "encodepoint %s = %s" % (repr(p),
                                   ed25519.encodepoint(p).encode('hex'))

msg = "This is a secret message"
sig = ed25519.signature(msg, sk, pk)
print 'signature("%s") = %s' % (msg, sig.encode('hex'))
try:
    ed25519.checkvalid(sig, msg, pk)
    print 'check signature result: true'
except:
    print 'check signature result: false'