For when your slice of crust if facing the most distant reaches of tomorrow.
Project description
Bravo! You have received a Medical Diploma from
the Orbital Convergence University International Air and Water Embassy of the Tangerine Planet.
You are now officially certified to include this module in your practice.
nocturnal
description
Make sure you use this inside a Docker container.
It runs deletions.
obtain & build
pip install nocturnal
fernet tar
Given a directory (in the CWD) named: "constant"
This produces a key: fernet.key.JSON
Then produces encrypt: constant.tar.fernet
Then produces decrypt: constant.decrypted
These procedures search for: fernet.key.JSON
nocturnal fernet_1_tar produce_key
nocturnal fernet_1_tar encrypt --dir "constant"
nocturnal fernet_1_tar decrypt --file "constant.tar.fernet"
Edward's Elliptic Curve 448 Keys
tutorial
<body>
<h1>EEC_448_2 tutorial</h1>
<h2>elliptic keys</h2>
<article>
<p>The "private" key is created from a "seed" string.</p>
<p>The "public" key is created from the "private" key.</p>
<p>The "private" key is used for signing bytes.</p>
<p>The "public" key is used for verifying signatures.</p>
</article>
<article>
<h3>private and public key creation</h3>
<p></p>
<code>
import nocturnal.activities.EEC_448_2.private_key.creator as EEC_448_2_private_key_creator
import nocturnal.activities.EEC_448_2.private_key.etch as etch_EEC_448_private_key
import nocturnal.activities.EEC_448_2.public_key.creator as EEC_448_2_public_key_creator
import nocturnal.activities.EEC_448_2.public_key.etch as etch_EEC_448_2_public_key
import pathlib
from os.path import dirname, join, normpath
import os
import json
seed = "".join ([
"4986888B11358BF3D541B41EEA5DAECE1C6EFF64130A45FC8B9CA48F3",
"E0E02463C99C5AEDC8A847686D669B7D547C18FE448FC5111CA88F4E8"
])
private_key_path = normpath (
join (pathlib.Path (__file__).parent.resolve (), "EEC_448_2_private_key")
) + ".JSON"
public_key_path = normpath (
join (pathlib.Path (__file__).parent.resolve (), "EEC_448_2_public_key")
) + ".JSON"
#
# create private key
#
private_key = EEC_448_2_private_key_creator.create (seed)
private_key_instance = private_key ["instance"]
private_key_DER_hexadecimal_string = private_key ["DER hexadecimal string"]
#
# create public key
#
public_key = EEC_448_2_public_key_creator.create (
private_key_instance
)
#
# etch public key
#
etch_EEC_448_2_public_key.start (
public_key_path,
json.dumps ({
"public key": {
"DER hexadecimal string": public_key ["DER hexadecimal string"]
}
}, indent = 4),
"JSON"
)
</code>
</article>
<h3>signatures</h3>
<article>
<p>With the "private" key and an unsigned byte string, the "sign" procedure generates signed bytes.</p>
</article>
<code>
import nocturnal.activities.EEC_448_2.private_key.instance as instantiate_private_key
import nocturnal.activities.EEC_448_2.private_key.scan as private_key_scan
import nocturnal.activities.EEC_448_2.sign as EEC_448_2_sign
import nocturnal.activities.EEC_448_2.modulators.byte_string.from_hexadecimal as hexadecimal_to_byte_string
import pathlib
from os.path import dirname, join, normpath
import os
import json
private_key_path = normpath (
join (pathlib.Path (__file__).parent.resolve (), "EEC_448_2_private_key")
) + ".JSON"
private_key_instance = instantiate_private_key.from_DER_hexadecimal_string (
private_key_scan.start (private_key_path, "JSON") ["private key"] ["DER hexadecimal string"]
)
unicode_string = json.dumps ({
"move": "send",
"fields": {
"to": {
"format": "EEC_448_2",
"address": "3043300506032b6571033a00e26960a83c45c0bb86e356cd727473e96682e76c6dd01c991a6ea0a394ecca27b467554d73e2a22b05425c1926a7a92befda5c1937d6876f00"
},
"amount": "40324789324873"
}
}, indent = 4)
unsigned_bytes = unicode_string.encode ("utf-8")
signed = EEC_448_2_sign.start (
private_key_instance,
unsigned_bytes = unsigned_bytes
)
signed_bytes_hexadecimal = signed ["signed bytes hexadecimal"]
print ("signed_bytes_hexadecimal:", signed_bytes_hexadecimal)
#
# signed bytes as hexadecimal:
# 8185E7174BF29936D2E204AE2CC01722FAB3ED93EA0B045868DA1BB14B51A9E59BAC06E849DE1E95D51CF49E5073A97B940CA24CC3444C7180AB2265923E341412FD502BFAA8B6456B9073217BEEFC6C40789DE7250BB899C7751D1E42AA71054E991E508F7AB1BD968B736B0EFBE0581500
#
</code>
<h3>verification</h3>
<article>
<p>
With the "public" key, the unsigned byte string, and the
signed byted string, the "verify" procedure figures out
whether the signature is legit.
</p>
</article>
<code>
import nocturnal.activities.EEC_448_2.public_key.scan as public_key_scan
import nocturnal.activities.EEC_448_2.public_key.instance as instantiate_public_key
import nocturnal.activities.EEC_448_2.sign as EEC_448_2_sign
import nocturnal.activities.EEC_448_2.verify as verify
import nocturnal.activities.EEC_448_2.modulators.byte_string.from_hexadecimal as hexadecimal_to_byte_string
public_key_path = normpath (
join (pathlib.Path (__file__).parent.resolve (), "EEC_448_2_public_key")
) + ".JSON"
public_key_instance = instantiate_public_key.from_DER_hexadecimal_string (
public_key_scan.start (public_key_path, "JSON") ["public key"] ["DER hexadecimal string"]
)
unicode_string = json.dumps ({
"move": "send",
"fields": {
"to": {
"format": "EEC_448_2",
"address": "3043300506032b6571033a00e26960a83c45c0bb86e356cd727473e96682e76c6dd01c991a6ea0a394ecca27b467554d73e2a22b05425c1926a7a92befda5c1937d6876f00"
},
"amount": "40324789324873"
}
}, indent = 4)
unsigned_bytes = unicode_string.encode ("utf-8")
signed_bytes_hexadecimal = "8185E7174BF29936D2E204AE2CC01722FAB3ED93EA0B045868DA1BB14B51A9E59BAC06E849DE1E95D51CF49E5073A97B940CA24CC3444C7180AB2265923E341412FD502BFAA8B6456B9073217BEEFC6C40789DE7250BB899C7751D1E42AA71054E991E508F7AB1BD968B736B0EFBE0581500"
#
# verify is legit
#
verification_1 = verify.start (
public_key_instance,
signed_bytes = hexadecimal_to_byte_string.modulate (signed_bytes_hexadecimal),
unsigned_bytes = unsigned_bytes
)
assert (verification_1 == "yes")
</code>
</body>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nocturnal-1.2.0.tar.gz
(76.3 kB
view hashes)