Skip to content

Commit 5dcfc26

Browse files
authored
Merge pull request #41 from FoamyGuy/json_key_file_example
json key file example
2 parents ec57cf0 + b3ca777 commit 5dcfc26

5 files changed

+52
-0
lines changed

examples/keys/example512key.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"private_key_arguments": [10802924268999465233003672463737659932191279041133968058923436754367015686828567560383989892160402220695228233889545658683964318629332408693761505895756447, 65537, 6603041646208715356266858592129685239844946455128316714288951729655521528037145487273616012885516521612688207348765184497451491506274914199323595424930097, 112900874195215049358818352411672948770646187545424444301451131703364915854523, 95685036506628869041897601422905615595924763394819122702857010830658994689389]}
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# SPDX-FileCopyrightText: 2024 Tim Cocks
2+
# SPDX-License-Identifier: MIT

examples/keys/example512key_pub.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"public_key_arguments": [10802924268999465233003672463737659932191279041133968058923436754367015686828567560383989892160402220695228233889545658683964318629332408693761505895756447, 65537]}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# SPDX-FileCopyrightText: 2024 Tim Cocks
2+
# SPDX-License-Identifier: MIT

examples/rsa_json_keys.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# SPDX-FileCopyrightText: 2024 Tim Cocks
2+
# SPDX-License-Identifier: MIT
3+
import binascii
4+
import json
5+
import adafruit_rsa
6+
from adafruit_rsa import PublicKey, PrivateKey
7+
8+
"""
9+
CircuitPython microcontrollers cannot load PEM key files generated by OpenSSL
10+
because the pyasn1 module is not supported. This example illustrates a way
11+
of loading keys from JSON files instead.
12+
"""
13+
14+
# load a keypair from JSON files
15+
16+
with open("keys/example512key.json", "r") as f:
17+
priv_key_obj = json.loads(f.read())
18+
19+
20+
with open("keys/example512key_pub.json", "r") as f:
21+
pub_key_obj = json.loads(f.read())
22+
23+
24+
# initialize the Key objects from data that was loaded from the JSON files
25+
public_key = PublicKey(*pub_key_obj["public_key_arguments"])
26+
private_key = PrivateKey(*priv_key_obj["private_key_arguments"])
27+
28+
# Message to send
29+
message = "hello blinka"
30+
31+
# Encode the string as bytes (Adafruit_RSA only operates on bytes!)
32+
message = message.encode("utf-8")
33+
34+
# Encrypt the message using the public key
35+
print("Encrypting message...")
36+
encrypted_message = adafruit_rsa.encrypt(message, public_key)
37+
38+
print("encrypted b64: ")
39+
print(binascii.b2a_base64(encrypted_message, False).decode())
40+
41+
# Decrypt the encrypted message using a private key
42+
print("Decrypting message...")
43+
decrypted_message = adafruit_rsa.decrypt(encrypted_message, private_key)
44+
45+
# Print out the decrypted message
46+
print("Decrypted Message: ", decrypted_message.decode("utf-8"))

0 commit comments

Comments
 (0)