File: //usr/local/CyberCP/lib/python3.10/site-packages/jose/backends/__pycache__/native.cpython-310.pyc
o
�h0 � @ sp d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl m
Z
mZmZm
Z
dd� ZG dd � d e�ZdS )
� N)�Key)�
ALGORITHMS)�JWKError)�base64url_decode�base64url_encode�
is_pem_format�
is_ssh_keyc C s t t�| ��S �N)�bytes�os�urandom)� num_bytes� r �G/usr/local/CyberCP/lib/python3.10/site-packages/jose/backends/native.py�get_random_bytes s r c @ sT e Zd ZdZejejejej ej
ejiZdd� Z
dd� Zdd� Zdd � Zd
d� ZdS )
�HMACKeyzf
Performs signing and verification operations using HMAC
and the specified hash function.
c C s� |t jvrtd| ��|| _| j�|�| _t|t�r"| � |�| _
d S t|t�s0t|t�s0td��t|t�r:|�
d�}t|�sBt|�rFtd��|| _
d S )Nz*hash_alg: %s is not a valid hash algorithmz+Expecting a string- or bytes-formatted key.�utf-8zdThe specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.)r �HMACr �
_algorithm�HASHES�get� _hash_alg�
isinstance�dict�_process_jwk�prepared_key�strr
�encoder r )�self�key� algorithmr r r �__init__ s
�
zHMACKey.__init__c C sH |� d�dkstd|� d� ��|� d�}|�d�}t|�}t|�}|S )N�kty�octz1Incorrect key type. Expected: 'oct', Received: %s�kr )r r r r
r )r �jwk_dictr$ r r r r / s
zHMACKey._process_jwkc C s t �| j|| j��� S r )�hmac�newr r �digest)r �msgr r r �sign: s zHMACKey.signc C s t �|| �|��S r )r&