Skip to content

Commit b496de8

Browse files
committed
Add tests for credblob
1 parent 4e8f758 commit b496de8

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/device/test_credblob.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from fido2.server import Fido2Server
2+
3+
import os
4+
import pytest
5+
6+
7+
@pytest.fixture(autouse=True, scope="module")
8+
def preconditions(dev_manager):
9+
if "credBlob" not in dev_manager.info.extensions:
10+
pytest.skip("CredBlob not supported by authenticator")
11+
12+
13+
def test_read_write(client):
14+
rp = {"id": "example.com", "name": "Example RP"}
15+
server = Fido2Server(rp)
16+
user = {"id": b"user_id", "name": "A. User"}
17+
18+
create_options, state = server.register_begin(
19+
user,
20+
resident_key_requirement="required",
21+
user_verification="required",
22+
)
23+
24+
# Create a credential
25+
blob = os.urandom(32)
26+
result = client.make_credential(
27+
{
28+
**create_options["publicKey"],
29+
"extensions": {"credBlob": blob},
30+
}
31+
)
32+
auth_data = server.register_complete(state, result)
33+
credentials = [auth_data.credential_data]
34+
35+
assert auth_data.extensions["credBlob"] is True
36+
37+
request_options, state = server.authenticate_begin(
38+
credentials, user_verification="required"
39+
)
40+
41+
selection = client.get_assertion(
42+
{
43+
**request_options["publicKey"],
44+
"extensions": {"getCredBlob": True},
45+
}
46+
)
47+
result = selection.get_response(0)
48+
49+
assert result.response.authenticator_data.extensions.get("credBlob") == blob

0 commit comments

Comments
 (0)