zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
U
ß=®dˆ+ã@sðddlZddlZddlmZddlmZddlmZddlm    Z    ddlm
Z
ej e e fZejeZeje ejfZejeZeje
Zejej eejeefefZejeejfZej ejeefZejedœd    d
„ZGd d „d ƒZdS) éNé)Ú
want_bytes)Ú
BadPayload)Ú BadSignature)Ú_make_keys_list)ÚSigner)Ú
serializerÚreturncCst| i¡tƒS)z5Checks whether a serializer generates text or binary.)Ú
isinstanceÚdumpsÚstr)r©r úNd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\itsdangerous/serializer.pyÚis_text_serializersrc    @sreZdZUdZeZejed<e    Z
e ed<gZ e ed<d,eeejeeje eeje dœdd    „Zeed
œd d „ƒZd-eejejejd œdd„Zejedœdd„Zd.ee    dœdd„Zd/eeje    dœdd„Zd0ejeedœdd„Zd1ejejeddœdd„Zd2eeejejdœdd „Zd3ejeejd!œd"d#„Z d4eee!d$œd%d&„Z"d5eeeee!d'œd(d)„Z#d6ejee!d!œd*d+„Z$dS)7Ú
Serializera:    A serializer wraps a :class:`~itsdangerous.signer.Signer` to
    enable serializing and securely signing data other than bytes. It
    can unsign to verify that the data hasn't been changed.
 
    The serializer provides :meth:`dumps` and :meth:`loads`, similar to
    :mod:`json`, and by default uses :mod:`json` internally to serialize
    the data to bytes.
 
    The secret key should be a random string of ``bytes`` and should not
    be saved to code or version control. Different salts should be used
    to distinguish signing in different contexts. See :doc:`/concepts`
    for information about the security of the secret key and salt.
 
    :param secret_key: The secret key to sign and verify with. Can be a
        list of keys, oldest to newest, to support key rotation.
    :param salt: Extra key to combine with ``secret_key`` to distinguish
        signatures in different contexts.
    :param serializer: An object that provides ``dumps`` and ``loads``
        methods for serializing data to a string. Defaults to
        :attr:`default_serializer`, which defaults to :mod:`json`.
    :param serializer_kwargs: Keyword arguments to pass when calling
        ``serializer.dumps``.
    :param signer: A ``Signer`` class to instantiate when signing data.
        Defaults to :attr:`default_signer`, which defaults to
        :class:`~itsdangerous.signer.Signer`.
    :param signer_kwargs: Keyword arguments to pass when instantiating
        the ``Signer`` class.
    :param fallback_signers: List of signer parameters to try when
        unsigning with the default signer fails. Each item can be a dict
        of ``signer_kwargs``, a ``Signer`` class, or a tuple of
        ``(signer, signer_kwargs)``. Defaults to
        :attr:`default_fallback_signers`.
 
    .. versionchanged:: 2.0
        Added support for key rotation by passing a list to
        ``secret_key``.
 
    .. versionchanged:: 2.0
        Removed the default SHA-512 fallback signer from
        ``default_fallback_signers``.
 
    .. versionchanged:: 1.1
        Added support for ``fallback_signers`` and configured a default
        SHA-512 fallback. This fallback is for users who used the yanked
        1.0.0 release which defaulted to SHA-512.
 
    .. versionchanged:: 0.14
        The ``signer`` and ``signer_kwargs`` parameters were added to
        the constructor.
    Údefault_serializerÚdefault_signerÚdefault_fallback_signersó itsdangerousN)Ú
secret_keyÚsaltrÚserializer_kwargsÚsignerÚ signer_kwargsÚfallback_signerscCs†t|ƒ|_|dk    rt|ƒ}||_|dkr.|j}||_t|ƒ|_|dkrL|j}||_|pXi|_    |dkrrt
|j pndƒ}||_ |p~i|_ dS)Nr )rÚ secret_keysrrrrrrrrÚlistrrr)Úselfrrrrrrrr r rÚ__init__Ys 
 
 
zSerializer.__init__)r    cCs
|jdS)zThe newest (last) entry in the :attr:`secret_keys` list. This
        is for compatibility from before key rotation support was added.
        éÿÿÿÿ)r)rr r rr‚szSerializer.secret_key)Úpayloadrr    c
Csv|dkr|j}|j}nt|ƒ}z"|r6| | d¡¡WS| |¡WStk
rp}ztd|d|‚W5d}~XYnXdS)aLoads the encoded object. This function raises
        :class:`.BadPayload` if the payload is not valid. The
        ``serializer`` parameter can be used to override the serializer
        stored on the class. The encoded ``payload`` should always be
        bytes.
        Núutf-8zSCould not load the payload because an exception occurred on unserializing the data.)Úoriginal_error)rrÚloadsÚdecodeÚ    Exceptionr)rr rZis_textÚer r rÚ load_payload‰s     ýüzSerializer.load_payload)Úobjr    cCst|jj|f|jŽƒS)z¡Dumps the encoded object. The return value is always bytes.
        If the internal serializer returns text, the value will be
        encoded as UTF-8.
        )rrr r)rr(r r rÚ dump_payload¤szSerializer.dump_payload)rr    cCs(|dkr|j}|j|jfd|i|j—ŽS)z‚Creates a new instance of the signer to be used. The default
        implementation uses the :class:`.Signer` base class.
        Nr)rrrr)rrr r rÚ make_signer«szSerializer.make_signerccs||dkr|j}| |¡V|jD]V}t|tƒr:|}|j}nt|tƒrN|\}}n|j}|jD]}||fd|i|—ŽVqZq dS)z¯Iterates over all signers to be tried for unsigning. Starts
        with the configured signer, then constructs each signer
        specified in ``fallback_signers``.
        Nr)    rr*rr
ÚdictrÚtuplerr)rrÚfallbackÚkwargsrr r rÚiter_unsigners´s 
 
 
 
 
zSerializer.iter_unsigners)r(rr    cCs2t| |¡ƒ}| |¡ |¡}|jr.| d¡S|S)zÅReturns a signed string serialized with the internal
        serializer. The return value can be either a byte or unicode
        string depending on the format of the internal serializer.
        r!)rr)r*Úsignrr$)rr(rr Úrvr r rr Ês
 
zSerializer.dumps)r(Úfrr    cCs| | ||¡¡dS)zŠLike :meth:`dumps` but dumps into a file. The file handle has
        to be compatible with what the internal serializer expects.
        N)Úwriter )rr(r2rr r rÚdump×szSerializer.dump)Úsrr.r    c Ksjt|ƒ}d}| |¡D]B}z| | |¡¡WStk
rV}z|}W5d}~XYqXqt t|¡‚dS)ziReverse of :meth:`dumps`. Raises :exc:`.BadSignature` if the
        signature validation fails.
        N)rr/r'ZunsignrÚ_tÚcast)rr5rr.Zlast_exceptionrÚerrr r rr#ÝszSerializer.loads)r2rr    cCs| | ¡|¡S)z)Like :meth:`loads` but loads from a file.)r#Úread©rr2rr r rÚloadîszSerializer.load)r5rr    cCs | ||¡S)a9Like :meth:`loads` but without verifying the signature. This
        is potentially very dangerous to use depending on how your
        serializer works. The return value is ``(signature_valid,
        payload)`` instead of just the payload. The first item will be a
        boolean that indicates if the signature is valid. This function
        never fails.
 
        Use it for debugging only and if you know that your serializer
        module is not exploitable (for example, do not use it with a
        pickle serializer).
 
        .. versionadded:: 0.15
        )Ú_loads_unsafe_impl)rr5rr r rÚ loads_unsafeòszSerializer.loads_unsafe)r5rÚ load_kwargsÚload_payload_kwargsr    c Cs¬|dkr i}zd|j|fd|i|—ŽfWStk
r¦}z`|jdkrNWY¢PdS|dkrZi}zd|j|jf|ŽfWWY¢"Stk
r”YWY¢
dSXW5d}~XYnXdS)zfLow level helper function to implement :meth:`loads_unsafe`
        in serializer subclasses.
        NTr)FNF)r#rr r'r)rr5rr>r?r&r r rr<s
 
 
þzSerializer._loads_unsafe_implcCs|j| ¡|dS)zYLike :meth:`loads_unsafe` but loads from a file.
 
        .. versionadded:: 0.15
        )r)r=r9r:r r rÚ load_unsafe"szSerializer.load_unsafe)rNNNNN)N)N)N)N)N)N)N)N)NN)N)%Ú__name__Ú
__module__Ú __qualname__Ú__doc__Újsonrr6ÚAnyÚ__annotations__rrÚ    _t_signerrÚ _t_fallbacksÚ _t_secret_keyÚ_t_opt_str_bytesÚ _t_opt_kwargsÚOptionalrÚpropertyÚbytesrr'r)r*ÚIteratorr/Ú _t_str_bytesr ÚIOr4r#r;Ú_t_load_unsafer=r<r@r r r rrsp
6  øø )ÿ
þ      ÿþ ÿþ ûú r) rEÚtypingr6ÚencodingrÚexcrrrrrÚUnionr rOrQrMrKÚDictrFZ    _t_kwargsrLÚTyperHÚListÚTuplerIÚboolrSÚIterablerJrrr r r rÚ<module>s