Я хочу добавить метод register
к ЦС ткани (здесь swagger определение), аналогичный функции enroll
здесь .
В документации CA указано:
Authorization:
An enrollment token consisting of two base 64 encoded parts separated by a period:
- an enrollment certificate;
- a signature over the certificate and body of request.
Глядя на аналог NodeJS здесь и аутентификационный заголовок поколения, я получил следующий код Python:
def register(self, enrollment_id, enrollment_secret, enrollment, crypto):
req = {
"caname": self._ca_name,
"id": enrollment_id,
"secret": enrollment_secret
}
signature = base64.encode(crypto.sign(enrollment.private_key, str(enrollment.cert) +'.'+ json.dumps(req, ensure_ascii=False)))
response = self._send_ca_post(path="register", json=req,
headers={'Authorization' : base64.encode(str(enrollment.cert) + '.' + str(signature))},
verify=self._ca_certs_path)
Я получаю TypeError: data must be bytes.
в этой signature = base64.encode(crypto.sign(enrollment.private_key, str(enrollment.cert) +'.'+ json.dumps(req, ensure_ascii=False)))
строке.
Может кто-нибудь помочь?