Compare commits

...

3 commits

Author SHA1 Message Date
mwiegand
b1e5992f05 group home 2022-02-15 09:39:11 +01:00
mwiegand
5ac4d3cc33 format 2022-02-15 09:39:04 +01:00
mwiegand
806b5e1880 ssh: dont set rendom bytes to zero 2022-02-15 09:36:57 +01:00
9 changed files with 31 additions and 15 deletions

1
groups/locations/home.py Normal file
View file

@ -0,0 +1 @@
{}

View file

@ -1,19 +1,23 @@
from base64 import b64decode, b64encode from base64 import b64decode, b64encode
from hashlib import sha3_256
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.serialization import Encoding, PrivateFormat, PublicFormat, NoEncryption
def generate_ed25519_key_pair(secret): def generate_ed25519_key_pair(secret):
privkey_bytes = Ed25519PrivateKey.from_private_bytes(secret) privkey_bytes = Ed25519PrivateKey.from_private_bytes(secret)
nondeterministic_privatekey = privkey_bytes.private_bytes( nondeterministic_privatekey = privkey_bytes.private_bytes(
encoding=serialization.Encoding.PEM, encoding=Encoding.PEM,
format=serialization.PrivateFormat.OpenSSH, format=PrivateFormat.OpenSSH,
encryption_algorithm=serialization.NoEncryption() encryption_algorithm=NoEncryption()
).decode() ).decode()
nondeterministic_bytes = b64decode(''.join(nondeterministic_privatekey.split('\n')[1:-2]))
# handle random 32bit number, occuring twice in a row # handle random 32bit number, occuring twice in a row
deterministic_bytes = nondeterministic_bytes[:98] + b'00000000' + nondeterministic_bytes[106:] nondeterministic_bytes = b64decode(''.join(nondeterministic_privatekey.split('\n')[1:-2]))
random_bytes = sha3_256(secret).digest()[0:4]
deterministic_bytes = nondeterministic_bytes[:98] + random_bytes + random_bytes + nondeterministic_bytes[106:]
deterministic_privatekey = '\n'.join([ deterministic_privatekey = '\n'.join([
'-----BEGIN OPENSSH PRIVATE KEY-----', '-----BEGIN OPENSSH PRIVATE KEY-----',
b64encode(deterministic_bytes).decode(), b64encode(deterministic_bytes).decode(),
@ -21,8 +25,8 @@ def generate_ed25519_key_pair(secret):
]) ])
public_key = privkey_bytes.public_key().public_bytes( public_key = privkey_bytes.public_key().public_bytes(
encoding=serialization.Encoding.OpenSSH, encoding=Encoding.OpenSSH,
format=serialization.PublicFormat.OpenSSH, format=PublicFormat.OpenSSH,
).decode() ).decode()
return (deterministic_privatekey, public_key) return (deterministic_privatekey, public_key)

View file

@ -1,10 +1,11 @@
{ {
'hostname': '10.0.0.5', 'hostname': '10.0.0.5',
'groups': [ 'groups': [
'debian-11',
'backup-server',
'monitored',
'autologin', 'autologin',
'backup-server',
'debian-11',
'home',
'monitored',
], ],
'bundles': [ 'bundles': [
'smartctl', 'smartctl',

View file

@ -1,8 +1,9 @@
{ {
'hostname': '10.0.2.8', 'hostname': '10.0.2.8',
'groups': [ 'groups': [
'raspberrymatic',
'autologin', 'autologin',
'home',
'raspberrymatic',
], ],
'bundles': [ 'bundles': [
'hostname', 'hostname',

View file

@ -1,5 +1,8 @@
{ {
'dummy': True, 'dummy': True,
'groups': [
'home',
],
'metadata': { 'metadata': {
'id': '', 'id': '',
'network': { 'network': {

View file

@ -1,12 +1,13 @@
{ {
'hostname': '10.0.0.17', 'hostname': '10.0.0.17',
'groups': [ 'groups': [
'autologin',
'backup', 'backup',
'debian-11', 'debian-11',
'home',
'monitored', 'monitored',
'raspberry-pi', 'raspberry-pi',
'webserver', 'webserver',
'autologin',
], ],
'bundles': [ 'bundles': [
'build-agent', 'build-agent',

View file

@ -1,14 +1,15 @@
{ {
'hostname': '10.0.0.2', 'hostname': '10.0.0.2',
'groups': [ 'groups': [
'autologin',
'backup', 'backup',
'debian-11', 'debian-11',
'home',
'nextcloud', 'nextcloud',
'monitored', 'monitored',
'webserver', 'webserver',
'hardware', 'hardware',
'build-server', 'build-server',
'autologin',
], ],
'bundles': [ 'bundles': [
'apcupsd', 'apcupsd',

View file

@ -1,10 +1,11 @@
{ {
'hostname': '10.0.0.15', 'hostname': '10.0.0.15',
'groups': [ 'groups': [
'autologin',
'debian-11', 'debian-11',
'home',
'raspberry-pi', 'raspberry-pi',
'monitored', 'monitored',
'autologin',
], ],
'bundles': [ 'bundles': [
'stromzaehler', 'stromzaehler',

View file

@ -1,5 +1,8 @@
{ {
'dummy': True, 'dummy': True,
'groups': [
'home',
],
'metadata': { 'metadata': {
'id': '', 'id': '',
'network': { 'network': {