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). Possible values include: 'EC',
21     'EC-HSM', 'RSA', 'RSA-HSM', 'oct'
22    :type kty: str or ~azure.keyvault.v2016_10_01.models.JsonWebKeyType
23    :param key_ops:
24    :type key_ops: list[str]
25    :param n: RSA modulus.
26    :type n: bytes
27    :param e: RSA public exponent.
28    :type e: bytes
29    :param d: RSA private exponent, or the D component of an EC private key.
30    :type d: bytes
31    :param dp: RSA private key parameter.
32    :type dp: bytes
33    :param dq: RSA private key parameter.
34    :type dq: bytes
35    :param qi: RSA private key parameter.
36    :type qi: bytes
37    :param p: RSA secret prime.
38    :type p: bytes
39    :param q: RSA secret prime, with p < q.
40    :type q: bytes
41    :param k: Symmetric key.
42    :type k: bytes
43    :param t: HSM Token, used with 'Bring Your Own Key'.
44    :type t: bytes
45    :param crv: Elliptic curve name. For valid values, see
46     JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521',
47     'SECP256K1'
48    :type crv: str or ~azure.keyvault.v2016_10_01.models.JsonWebKeyCurveName
49    :param x: X component of an EC public key.
50    :type x: bytes
51    :param y: Y component of an EC public key.
52    :type y: bytes
53    """
54
55    _attribute_map = {
56        'kid': {'key': 'kid', 'type': 'str'},
57        'kty': {'key': 'kty', 'type': 'str'},
58        'key_ops': {'key': 'key_ops', 'type': '[str]'},
59        'n': {'key': 'n', 'type': 'base64'},
60        'e': {'key': 'e', 'type': 'base64'},
61        'd': {'key': 'd', 'type': 'base64'},
62        'dp': {'key': 'dp', 'type': 'base64'},
63        'dq': {'key': 'dq', 'type': 'base64'},
64        'qi': {'key': 'qi', 'type': 'base64'},
65        'p': {'key': 'p', 'type': 'base64'},
66        'q': {'key': 'q', 'type': 'base64'},
67        'k': {'key': 'k', 'type': 'base64'},
68        't': {'key': 'key_hsm', 'type': 'base64'},
69        'crv': {'key': 'crv', 'type': 'str'},
70        'x': {'key': 'x', 'type': 'base64'},
71        'y': {'key': 'y', 'type': 'base64'},
72    }
73
74    def __init__(self, **kwargs):
75        super(JsonWebKey, self).__init__(**kwargs)
76        self.kid = kwargs.get('kid', None)
77        self.kty = kwargs.get('kty', None)
78        self.key_ops = kwargs.get('key_ops', None)
79        self.n = kwargs.get('n', None)
80        self.e = kwargs.get('e', None)
81        self.d = kwargs.get('d', None)
82        self.dp = kwargs.get('dp', None)
83        self.dq = kwargs.get('dq', None)
84        self.qi = kwargs.get('qi', None)
85        self.p = kwargs.get('p', None)
86        self.q = kwargs.get('q', None)
87        self.k = kwargs.get('k', None)
88        self.t = kwargs.get('t', None)
89        self.crv = kwargs.get('crv', None)
90        self.x = kwargs.get('x', None)
91        self.y = kwargs.get('y', None)
92