1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for
5# license information.
6#
7# Code generated by Microsoft (R) AutoRest Code Generator.
8# Changes may cause incorrect behavior and will be lost if the code is
9# regenerated.
10# --------------------------------------------------------------------------
11
12from msrest.serialization import Model
13
14
15class JsonWebKey(Model):
16    """As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18.
17
18    :param kid: Key identifier.
19    :type kid: str
20    :param kty: JsonWebKey Key Type (kty), as defined in
21     https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40.
22     Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'
23    :type kty: str or ~azure.keyvault.v7_0.models.JsonWebKeyType
24    :param key_ops:
25    :type key_ops: list[str]
26    :param n: RSA modulus.
27    :type n: bytes
28    :param e: RSA public exponent.
29    :type e: bytes
30    :param d: RSA private exponent, or the D component of an EC private key.
31    :type d: bytes
32    :param dp: RSA private key parameter.
33    :type dp: bytes
34    :param dq: RSA private key parameter.
35    :type dq: bytes
36    :param qi: RSA private key parameter.
37    :type qi: bytes
38    :param p: RSA secret prime.
39    :type p: bytes
40    :param q: RSA secret prime, with p < q.
41    :type q: bytes
42    :param k: Symmetric key.
43    :type k: bytes
44    :param t: HSM Token, used with 'Bring Your Own Key'.
45    :type t: bytes
46    :param crv: Elliptic curve name. For valid values, see
47     JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521',
48     'P-256K'
49    :type crv: str or ~azure.keyvault.v7_0.models.JsonWebKeyCurveName
50    :param x: X component of an EC public key.
51    :type x: bytes
52    :param y: Y component of an EC public key.
53    :type y: bytes
54    """
55
56    _attribute_map = {
57        'kid': {'key': 'kid', 'type': 'str'},
58        'kty': {'key': 'kty', 'type': 'str'},
59        'key_ops': {'key': 'key_ops', 'type': '[str]'},
60        'n': {'key': 'n', 'type': 'base64'},
61        'e': {'key': 'e', 'type': 'base64'},
62        'd': {'key': 'd', 'type': 'base64'},
63        'dp': {'key': 'dp', 'type': 'base64'},
64        'dq': {'key': 'dq', 'type': 'base64'},
65        'qi': {'key': 'qi', 'type': 'base64'},
66        'p': {'key': 'p', 'type': 'base64'},
67        'q': {'key': 'q', 'type': 'base64'},
68        'k': {'key': 'k', 'type': 'base64'},
69        't': {'key': 'key_hsm', 'type': 'base64'},
70        'crv': {'key': 'crv', 'type': 'str'},
71        'x': {'key': 'x', 'type': 'base64'},
72        'y': {'key': 'y', 'type': 'base64'},
73    }
74
75    def __init__(self, *, kid: str=None, kty=None, key_ops=None, n: bytes=None, e: bytes=None, d: bytes=None, dp: bytes=None, dq: bytes=None, qi: bytes=None, p: bytes=None, q: bytes=None, k: bytes=None, t: bytes=None, crv=None, x: bytes=None, y: bytes=None, **kwargs) -> None:
76        super(JsonWebKey, self).__init__(**kwargs)
77        self.kid = kid
78        self.kty = kty
79        self.key_ops = key_ops
80        self.n = n
81        self.e = e
82        self.d = d
83        self.dp = dp
84        self.dq = dq
85        self.qi = qi
86        self.p = p
87        self.q = q
88        self.k = k
89        self.t = t
90        self.crv = crv
91        self.x = x
92        self.y = y
93