PHP 8.2.30
Preview: tsigkeyring.py Size: 2.57 KB
/opt/hc_python/lib64/python3.12/site-packages/dns/tsigkeyring.py

# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license

# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose with or without fee is hereby granted,
# provided that the above copyright notice and this permission notice
# appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

"""A place to store TSIG keys."""

import base64
from typing import Any, Dict

import dns.name
import dns.tsig


def from_text(textring: Dict[str, Any]) -> Dict[dns.name.Name, dns.tsig.Key]:
    """Convert a dictionary containing (textual DNS name, base64 secret)
    pairs into a binary keyring which has (dns.name.Name, bytes) pairs, or
    a dictionary containing (textual DNS name, (algorithm, base64 secret))
    pairs into a binary keyring which has (dns.name.Name, dns.tsig.Key) pairs.
    @rtype: dict"""

    keyring = {}
    for name, value in textring.items():
        kname = dns.name.from_text(name)
        if isinstance(value, str):
            keyring[kname] = dns.tsig.Key(kname, value).secret
        else:
            (algorithm, secret) = value
            keyring[kname] = dns.tsig.Key(kname, secret, algorithm)
    return keyring


def to_text(keyring: Dict[dns.name.Name, Any]) -> Dict[str, Any]:
    """Convert a dictionary containing (dns.name.Name, dns.tsig.Key) pairs
    into a text keyring which has (textual DNS name, (textual algorithm,
    base64 secret)) pairs, or a dictionary containing (dns.name.Name, bytes)
    pairs into a text keyring which has (textual DNS name, base64 secret) pairs.
    @rtype: dict"""

    textring = {}

    def b64encode(secret):
        return base64.encodebytes(secret).decode().rstrip()

    for name, key in keyring.items():
        tname = name.to_text()
        if isinstance(key, bytes):
            textring[tname] = b64encode(key)
        else:
            if isinstance(key.secret, bytes):
                text_secret = b64encode(key.secret)
            else:
                text_secret = str(key.secret)

            textring[tname] = (key.algorithm.to_text(), text_secret)
    return textring

Directory Contents

Dirs: 4 × Files: 56

Name Size Perms Modified Actions
- drwxr-xr-x 2025-04-04 08:02:00
Edit Download
quic DIR
- drwxr-xr-x 2025-04-04 08:02:00
Edit Download
rdtypes DIR
- drwxr-xr-x 2025-04-04 08:02:00
Edit Download
- drwxr-xr-x 2025-04-04 08:02:00
Edit Download
2.73 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
30.10 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
17.43 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
40.74 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
1.76 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
3.88 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
16.69 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
4.14 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
3.60 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
5.81 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.69 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.09 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
1.97 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
5.64 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.49 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
6.40 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
66.59 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
41.78 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
3.91 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
9.88 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
12.37 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.67 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
0 B lrw-r--r-- 2025-04-04 08:02:00
Edit Download
54.98 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
4.06 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
30.29 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.91 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
16.27 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
7.27 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
10.99 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
72.00 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
3.74 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
8.96 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
3.52 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
9.00 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
23.03 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
22.06 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
11.15 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.57 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.91 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
11.96 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
1.88 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
11.49 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
8.67 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.76 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
12.96 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
50.87 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
27.27 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
690 B lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.34 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
8.84 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
5.12 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.43 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
2.40 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
8.27 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download
1.62 KB lrw-r--r-- 2025-04-04 08:02:00
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).