+13
CHANGELOG.md
+13
CHANGELOG.md
···
7
7
8
8
## [Unreleased]
9
9
10
+
## [0.11.1] - 2025-08-20
11
+
### Fixed
12
+
- Base64 decoding in `atproto-record` now accepts both padded and unpadded base64 strings for better compatibility with various AT Protocol implementations
13
+
- Updated `signature::verify` function to only accept `{"$bytes": "..."}` format for signatures
14
+
15
+
### Added
16
+
- Comprehensive unit tests for record signature creation and verification across P-256, P-384, and K-256 curves
17
+
- Unit test for deserializing real-world RSVP records with signatures
18
+
19
+
### Changed
20
+
- Made `create` and `verify` functions in the signature module synchronous (removed `async`) as they don't perform async operations
21
+
10
22
## [0.11.0] - 2025-08-18
11
23
### Added
12
24
- Document builder functionality for AT Protocol documents
···
124
136
- Core DID document handling
125
137
- Cryptographic key operations for P-256 curves
126
138
139
+
[0.11.1]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.1
127
140
[0.11.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.0
128
141
[0.10.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.10.0
129
142
[0.9.7]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.7
+9
-9
Cargo.lock
+9
-9
Cargo.lock
···
107
107
108
108
[[package]]
109
109
name = "atproto-client"
110
-
version = "0.11.0"
110
+
version = "0.11.1"
111
111
dependencies = [
112
112
"anyhow",
113
113
"atproto-identity",
···
130
130
131
131
[[package]]
132
132
name = "atproto-identity"
133
-
version = "0.11.0"
133
+
version = "0.11.1"
134
134
dependencies = [
135
135
"anyhow",
136
136
"async-trait",
···
156
156
157
157
[[package]]
158
158
name = "atproto-jetstream"
159
-
version = "0.11.0"
159
+
version = "0.11.1"
160
160
dependencies = [
161
161
"anyhow",
162
162
"async-trait",
···
178
178
179
179
[[package]]
180
180
name = "atproto-oauth"
181
-
version = "0.11.0"
181
+
version = "0.11.1"
182
182
dependencies = [
183
183
"anyhow",
184
184
"async-trait",
···
210
210
211
211
[[package]]
212
212
name = "atproto-oauth-aip"
213
-
version = "0.11.0"
213
+
version = "0.11.1"
214
214
dependencies = [
215
215
"anyhow",
216
216
"atproto-oauth",
···
224
224
225
225
[[package]]
226
226
name = "atproto-oauth-axum"
227
-
version = "0.11.0"
227
+
version = "0.11.1"
228
228
dependencies = [
229
229
"anyhow",
230
230
"async-trait",
···
253
253
254
254
[[package]]
255
255
name = "atproto-record"
256
-
version = "0.11.0"
256
+
version = "0.11.1"
257
257
dependencies = [
258
258
"anyhow",
259
259
"atproto-identity",
···
269
269
270
270
[[package]]
271
271
name = "atproto-xrpcs"
272
-
version = "0.11.0"
272
+
version = "0.11.1"
273
273
dependencies = [
274
274
"anyhow",
275
275
"async-trait",
···
295
295
296
296
[[package]]
297
297
name = "atproto-xrpcs-helloworld"
298
-
version = "0.11.0"
298
+
version = "0.11.1"
299
299
dependencies = [
300
300
"anyhow",
301
301
"async-trait",
+8
-8
Cargo.toml
+8
-8
Cargo.toml
···
22
22
categories = ["command-line-utilities", "web-programming"]
23
23
24
24
[workspace.dependencies]
25
-
atproto-client = { version = "0.11.0", path = "crates/atproto-client" }
26
-
atproto-identity = { version = "0.11.0", path = "crates/atproto-identity" }
27
-
atproto-oauth = { version = "0.11.0", path = "crates/atproto-oauth" }
28
-
atproto-oauth-axum = { version = "0.11.0", path = "crates/atproto-oauth-axum" }
29
-
atproto-oauth-aip = { version = "0.11.0", path = "crates/atproto-oauth-aip" }
30
-
atproto-record = { version = "0.11.0", path = "crates/atproto-record" }
31
-
atproto-xrpcs = { version = "0.11.0", path = "crates/atproto-xrpcs" }
32
-
atproto-jetstream = { version = "0.11.0", path = "crates/atproto-jetstream" }
25
+
atproto-client = { version = "0.11.1", path = "crates/atproto-client" }
26
+
atproto-identity = { version = "0.11.1", path = "crates/atproto-identity" }
27
+
atproto-oauth = { version = "0.11.1", path = "crates/atproto-oauth" }
28
+
atproto-oauth-axum = { version = "0.11.1", path = "crates/atproto-oauth-axum" }
29
+
atproto-oauth-aip = { version = "0.11.1", path = "crates/atproto-oauth-aip" }
30
+
atproto-record = { version = "0.11.1", path = "crates/atproto-record" }
31
+
atproto-xrpcs = { version = "0.11.1", path = "crates/atproto-xrpcs" }
32
+
atproto-jetstream = { version = "0.11.1", path = "crates/atproto-jetstream" }
33
33
34
34
anyhow = "1.0"
35
35
async-trait = "0.1.88"
+1
-1
Dockerfile
+1
-1
Dockerfile
···
66
66
LABEL org.opencontainers.image.description="AT Protocol identity management tools"
67
67
LABEL org.opencontainers.image.authors="Nick Gerakines <nick.gerakines@gmail.com>"
68
68
LABEL org.opencontainers.image.source="https://tangled.sh/@smokesignal.events/atproto-identity-rs"
69
-
LABEL org.opencontainers.image.version="0.11.0"
69
+
LABEL org.opencontainers.image.version="0.11.1"
70
70
LABEL org.opencontainers.image.licenses="MIT"
71
71
72
72
# Document available binaries
+5
-5
README.md
+5
-5
README.md
···
35
35
36
36
```toml
37
37
[dependencies]
38
-
atproto-identity = "0.11.0"
39
-
atproto-record = "0.11.0"
40
-
atproto-oauth = "0.11.0"
41
-
atproto-oauth-aip = "0.11.0"
42
-
atproto-client = "0.11.0"
38
+
atproto-identity = "0.11.1"
39
+
atproto-record = "0.11.1"
40
+
atproto-oauth = "0.11.1"
41
+
atproto-oauth-aip = "0.11.1"
42
+
atproto-client = "0.11.1"
43
43
# Add others as needed
44
44
```
45
45
+1
-1
crates/atproto-client/Cargo.toml
+1
-1
crates/atproto-client/Cargo.toml
+1
-1
crates/atproto-identity/Cargo.toml
+1
-1
crates/atproto-identity/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-identity"
3
-
version = "0.11.0"
3
+
version = "0.11.1"
4
4
description = "AT Protocol identity management - DID resolution, handle resolution, and cryptographic operations"
5
5
readme = "README.md"
6
6
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1
-1
crates/atproto-jetstream/Cargo.toml
+1
-1
crates/atproto-jetstream/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-jetstream"
3
-
version = "0.11.0"
3
+
version = "0.11.1"
4
4
description = "AT Protocol Jetstream event consumer library with WebSocket streaming and compression support"
5
5
readme = "README.md"
6
6
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1
-1
crates/atproto-oauth-aip/Cargo.toml
+1
-1
crates/atproto-oauth-aip/Cargo.toml
+1
-1
crates/atproto-oauth-axum/Cargo.toml
+1
-1
crates/atproto-oauth-axum/Cargo.toml
+1
-1
crates/atproto-oauth/Cargo.toml
+1
-1
crates/atproto-oauth/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-oauth"
3
-
version = "0.11.0"
3
+
version = "0.11.1"
4
4
description = "OAuth workflow implementation for AT Protocol - PKCE, DPoP, and secure authentication flows"
5
5
readme = "README.md"
6
6
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1
-1
crates/atproto-record/Cargo.toml
+1
-1
crates/atproto-record/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-record"
3
-
version = "0.11.0"
3
+
version = "0.11.1"
4
4
description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records"
5
5
readme = "README.md"
6
6
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1
-1
crates/atproto-xrpcs-helloworld/Cargo.toml
+1
-1
crates/atproto-xrpcs-helloworld/Cargo.toml