Last active
November 24, 2020 17:29
-
-
Save jorrizza/c9aa77a0b86ca578e4c440eed9106032 to your computer and use it in GitHub Desktop.
NaCl test Go and Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/message_* | |
/.vscode |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3.8.5 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"crypto/ed25519" | |
"crypto/rand" | |
"fmt" | |
"io/ioutil" | |
"os" | |
"github.com/jorrizza/ed2curve25519" | |
"golang.org/x/crypto/nacl/box" | |
) | |
func main() { | |
aliceEd25519Seed := make([]byte, ed25519.SeedSize) | |
bobEd25519Seed := make([]byte, ed25519.SeedSize) | |
f, err := os.Open("key_alice") | |
if err != nil { | |
panic(err) | |
} | |
if _, err := f.Read(aliceEd25519Seed); err != nil { | |
panic(err) | |
} | |
if err := f.Close(); err != nil { | |
panic(err) | |
} | |
f, err = os.Open("key_bob") | |
if err != nil { | |
panic(err) | |
} | |
if _, err := f.Read(bobEd25519Seed); err != nil { | |
panic(err) | |
} | |
if err := f.Close(); err != nil { | |
panic(err) | |
} | |
ed25519PrivateKey := ed25519.NewKeyFromSeed(aliceEd25519Seed) | |
ed25519PublicKey := ed25519PrivateKey.Public().(ed25519.PublicKey) | |
curve25519PrivateKey := ed2curve25519.Ed25519PrivateKeyToCurve25519(ed25519PrivateKey) | |
curve25519PublicKey := ed2curve25519.Ed25519PublicKeyToCurve25519(ed25519PublicKey) | |
alicePrivateKey, alicePublicKey := new([32]byte), new([32]byte) | |
bobPrivateKey, bobPublicKey := new([32]byte), new([32]byte) | |
copy(alicePrivateKey[:], curve25519PrivateKey) | |
copy(alicePublicKey[:], curve25519PublicKey) | |
ed25519PrivateKey = ed25519.NewKeyFromSeed(bobEd25519Seed) | |
ed25519PublicKey = ed25519PrivateKey.Public().(ed25519.PublicKey) | |
curve25519PrivateKey = ed2curve25519.Ed25519PrivateKeyToCurve25519(ed25519PrivateKey) | |
curve25519PublicKey = ed2curve25519.Ed25519PublicKeyToCurve25519(ed25519PublicKey) | |
copy(bobPrivateKey[:], curve25519PrivateKey) | |
copy(bobPublicKey[:], curve25519PublicKey) | |
message := []byte("kill all humans!") | |
encrypted, _ := box.SealAnonymous(nil, message, bobPublicKey, rand.Reader) | |
f, err = os.Create("message_bob") | |
if err != nil { | |
panic(err) | |
} | |
if _, err := f.Write(encrypted); err != nil { | |
panic(err) | |
} | |
if err := f.Close(); err != nil { | |
panic(err) | |
} | |
encryptedForMe, err := ioutil.ReadFile("message_alice") | |
if err != nil { | |
return | |
} | |
decrypted, ok := box.OpenAnonymous(nil, encryptedForMe, alicePublicKey, alicePrivateKey) | |
if !ok { | |
fmt.Println("Could not decrypt message_alice") | |
} else { | |
fmt.Printf("Message: %s\n", decrypted) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import sys | |
from nacl.signing import SigningKey | |
from nacl.public import PrivateKey, Box, SealedBox | |
from nacl.encoding import HexEncoder | |
f = open('key_alice', 'rb') | |
key_alice = f.read(32) | |
f.close() | |
f = open('key_bob', 'rb') | |
key_bob = f.read(32) | |
f.close() | |
ed25519_private_key = SigningKey(key_alice) | |
ed25519_public_key = ed25519_private_key.verify_key | |
curve25519_private_key = ed25519_private_key.to_curve25519_private_key() | |
curve25519_public_key = ed25519_public_key.to_curve25519_public_key() | |
alice_private_key = curve25519_private_key | |
alice_public_key = alice_private_key.public_key | |
bob_private_key = SigningKey(key_bob).to_curve25519_private_key() | |
bob_public_key = bob_private_key.public_key | |
message = b"kill all humans!" | |
alice_box = SealedBox(alice_public_key) | |
encrypted = alice_box.encrypt(message) | |
f = open('message_alice', 'wb+') | |
f.write(encrypted) | |
f.close() | |
try: | |
f = open('message_bob', 'rb') | |
except: | |
exit(0) | |
encrypted_for_me = f.read() | |
f.close() | |
bob_box = SealedBox(bob_private_key) | |
decrypted = bob_box.decrypt(encrypted_for_me) | |
print(f"Message: {decrypted.decode()}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
œ’„?ŽÌÂZ"HŸÎ®»¢f0KXoxR^Ï„C À@] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
”?ÚWŔ° ý#đö…é“ #a~?˘”mwĘh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.PHONY: all | |
all: | |
go run alice.go | |
pipenv run ./bob.py |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[[source]] | |
name = "pypi" | |
url = "https://pypi.org/simple" | |
verify_ssl = true | |
[dev-packages] | |
[packages] | |
pynacl = "*" | |
[requires] | |
python_version = "3.8" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"_meta": { | |
"hash": { | |
"sha256": "f6549c07d210669ae5c4392ab30909ae0081667ab7fff27fc45d4ba601ac602a" | |
}, | |
"pipfile-spec": 6, | |
"requires": { | |
"python_version": "3.8" | |
}, | |
"sources": [ | |
{ | |
"name": "pypi", | |
"url": "https://pypi.org/simple", | |
"verify_ssl": true | |
} | |
] | |
}, | |
"default": { | |
"cffi": { | |
"hashes": [ | |
"sha256:005f2bfe11b6745d726dbb07ace4d53f057de66e336ff92d61b8c7e9c8f4777d", | |
"sha256:09e96138280241bd355cd585148dec04dbbedb4f46128f340d696eaafc82dd7b", | |
"sha256:0b1ad452cc824665ddc682400b62c9e4f5b64736a2ba99110712fdee5f2505c4", | |
"sha256:0ef488305fdce2580c8b2708f22d7785ae222d9825d3094ab073e22e93dfe51f", | |
"sha256:15f351bed09897fbda218e4db5a3d5c06328862f6198d4fb385f3e14e19decb3", | |
"sha256:22399ff4870fb4c7ef19fff6eeb20a8bbf15571913c181c78cb361024d574579", | |
"sha256:23e5d2040367322824605bc29ae8ee9175200b92cb5483ac7d466927a9b3d537", | |
"sha256:2791f68edc5749024b4722500e86303a10d342527e1e3bcac47f35fbd25b764e", | |
"sha256:2f9674623ca39c9ebe38afa3da402e9326c245f0f5ceff0623dccdac15023e05", | |
"sha256:3363e77a6176afb8823b6e06db78c46dbc4c7813b00a41300a4873b6ba63b171", | |
"sha256:33c6cdc071ba5cd6d96769c8969a0531be2d08c2628a0143a10a7dcffa9719ca", | |
"sha256:3b8eaf915ddc0709779889c472e553f0d3e8b7bdf62dab764c8921b09bf94522", | |
"sha256:3cb3e1b9ec43256c4e0f8d2837267a70b0e1ca8c4f456685508ae6106b1f504c", | |
"sha256:3eeeb0405fd145e714f7633a5173318bd88d8bbfc3dd0a5751f8c4f70ae629bc", | |
"sha256:44f60519595eaca110f248e5017363d751b12782a6f2bd6a7041cba275215f5d", | |
"sha256:4d7c26bfc1ea9f92084a1d75e11999e97b62d63128bcc90c3624d07813c52808", | |
"sha256:529c4ed2e10437c205f38f3691a68be66c39197d01062618c55f74294a4a4828", | |
"sha256:6642f15ad963b5092d65aed022d033c77763515fdc07095208f15d3563003869", | |
"sha256:85ba797e1de5b48aa5a8427b6ba62cf69607c18c5d4eb747604b7302f1ec382d", | |
"sha256:8f0f1e499e4000c4c347a124fa6a27d37608ced4fe9f7d45070563b7c4c370c9", | |
"sha256:a624fae282e81ad2e4871bdb767e2c914d0539708c0f078b5b355258293c98b0", | |
"sha256:b0358e6fefc74a16f745afa366acc89f979040e0cbc4eec55ab26ad1f6a9bfbc", | |
"sha256:bbd2f4dfee1079f76943767fce837ade3087b578aeb9f69aec7857d5bf25db15", | |
"sha256:bf39a9e19ce7298f1bd6a9758fa99707e9e5b1ebe5e90f2c3913a47bc548747c", | |
"sha256:c11579638288e53fc94ad60022ff1b67865363e730ee41ad5e6f0a17188b327a", | |
"sha256:c150eaa3dadbb2b5339675b88d4573c1be3cb6f2c33a6c83387e10cc0bf05bd3", | |
"sha256:c53af463f4a40de78c58b8b2710ade243c81cbca641e34debf3396a9640d6ec1", | |
"sha256:cb763ceceae04803adcc4e2d80d611ef201c73da32d8f2722e9d0ab0c7f10768", | |
"sha256:cc75f58cdaf043fe6a7a6c04b3b5a0e694c6a9e24050967747251fb80d7bce0d", | |
"sha256:d80998ed59176e8cba74028762fbd9b9153b9afc71ea118e63bbf5d4d0f9552b", | |
"sha256:de31b5164d44ef4943db155b3e8e17929707cac1e5bd2f363e67a56e3af4af6e", | |
"sha256:e66399cf0fc07de4dce4f588fc25bfe84a6d1285cc544e67987d22663393926d", | |
"sha256:f0620511387790860b249b9241c2f13c3a80e21a73e0b861a2df24e9d6f56730", | |
"sha256:f4eae045e6ab2bb54ca279733fe4eb85f1effda392666308250714e01907f394", | |
"sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1", | |
"sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591" | |
], | |
"version": "==1.14.3" | |
}, | |
"pycparser": { | |
"hashes": [ | |
"sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", | |
"sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" | |
], | |
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", | |
"version": "==2.20" | |
}, | |
"pynacl": { | |
"hashes": [ | |
"sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4", | |
"sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4", | |
"sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574", | |
"sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d", | |
"sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634", | |
"sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25", | |
"sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f", | |
"sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505", | |
"sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122", | |
"sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7", | |
"sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420", | |
"sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f", | |
"sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96", | |
"sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6", | |
"sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6", | |
"sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514", | |
"sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff", | |
"sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80" | |
], | |
"index": "pypi", | |
"version": "==1.4.0" | |
}, | |
"six": { | |
"hashes": [ | |
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", | |
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" | |
], | |
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", | |
"version": "==1.15.0" | |
} | |
}, | |
"develop": {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment