Skip to content

Commit f468181

Browse files
committed
Add ability to encrypt/decrypt NTP keys
Signed-off-by: Yevhen Fastiuk <[email protected]>
1 parent 8e2cfdf commit f468181

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

files/image_config/ntp/ntp.keys.j2

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
{# Define authentication keys inventory -#}
1414
{% set trusted_str = ' ' ~ trusted_arr|join(',') -%}
1515
{% for keyid in NTP_KEY if NTP_KEY[keyid].type and NTP_KEY[keyid].value %}
16-
{{ keyid }} {{ NTP_KEY[keyid].type }} {{ NTP_KEY[keyid].value }}{{trusted_str}}
16+
{% set keyval = NTP_KEY[keyid].value | b64decode %}
17+
{{ keyid }} {{ NTP_KEY[keyid].type }} {{ keyval }}{{trusted_str}}
1718
{% endfor -%}

src/sonic-config-engine/sonic-cfggen

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import netaddr
2525
import os
2626
import sys
2727
import yaml
28+
import base64
2829

2930
from collections import OrderedDict
3031
from config_samples import generate_sample_config, get_available_config
@@ -137,6 +138,31 @@ def ip_network(value):
137138
return "Invalid ip address %s" % value
138139
return r_v.network
139140

141+
142+
def b64encode(value):
143+
"""Base64 encoder
144+
Return:
145+
encoded string or the same value in case of error
146+
"""
147+
try:
148+
ret = base64.b64encode(value.encode()).decode()
149+
except:
150+
return value
151+
return ret
152+
153+
154+
def b64decode(value):
155+
"""Base64 decoder
156+
Return:
157+
decoded string or the same value in case of error
158+
"""
159+
try:
160+
ret = base64.b64decode(value.encode()).decode()
161+
except:
162+
return value
163+
return ret
164+
165+
140166
def load_namespace_config(asic_name):
141167
if not SonicDBConfig.isInit():
142168
if is_multi_asic():
@@ -250,6 +276,10 @@ def _get_jinja2_env(paths):
250276
for attr in ['ip', 'network', 'prefixlen', 'netmask', 'broadcast']:
251277
env.filters[attr] = partial(prefix_attr, attr)
252278

279+
# Base64 encoder/decoder
280+
env.filters['b64encode'] = b64encode
281+
env.filters['b64decode'] = b64decode
282+
253283
return env
254284

255285
def main():

0 commit comments

Comments
 (0)