上下文
我正在使用#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
void printLinkedList(const std::list<int> &l) {
for(int x : l) {
std::cout << x << " ";
}
std::cout << std::endl;
}
int main() {
std::list<int> l;
l.push_back(10);
l.push_back(20);
l.push_back(30);
std::cout << "Before copy: ";
printLinkedList(l);
std:copy_n(l.begin(), l.size(), std::back_inserter(l));
std::cout << "After copy: ";
printLinkedList(l);
return 0;
}
生成jwt,以将推送通知从python后端发送到APN(Apple推送通知服务)。我的后端在标准GAE(Google App Engine)实例上运行,因此必须在pyjwt
中使用旧版软件包pycrypto
和ecdsa
而不是cryptography
({{3 }}。
问题
我的pyjwt
(我从Apple Developer下载的)被格式化为auth_key.p8
,但是-----BEGIN PRIVATE KEY-----
软件包期望它被格式化为ecdsa
。因此,我得到以下回溯:
-----BEGIN EC PRIVATE KEY-----
我的 File "app/venv/lib/python3.7/site-packages/jwt/api_jwt.py", line 65, in encode
json_payload, key, algorithm, headers, json_encoder
File "app/venv/lib/python3.7/site-packages/jwt/api_jws.py", line 113, in encode
key = alg_obj.prepare_key(key)
File "app/venv/lib/python3.7/site-packages/jwt/contrib/algorithms/py_ecdsa.py", line 44, in prepare_key
key = ecdsa.SigningKey.from_pem(key)
File "app/venv/lib/python3.7/site-packages/ecdsa/keys.py", line 189, in from_pem
privkey_pem = string[string.index(b("-----BEGIN EC PRIVATE KEY-----")):]
ValueError: subsection not found
似乎是auth_key
不接受的格式,但是我不知道该怎么做才能解决此问题。我是否应该将此ecdsa
转换为其他格式?
谢谢您的帮助。
答案 0 :(得分:0)
对我来说,这是由于键末尾有换行符引起的。删除换行符后,错误消失了。