Python Fabric SDK, CA зарегистрировать пользователя - PullRequest
0 голосов
/ 07 января 2019

Я хочу добавить метод 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))) строке.

Может кто-нибудь помочь?

...