Loading CHANGES.md +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ To be released. - Added `VerifyObjectOptions.tracerProvider` option. - Added `SignObjectOptions.tracerProvider` option. - Added `VerifyJsonLdOptions.tracerProvider` option. - Added `SignJsonLdOptions.tracerProvider` option. - Added `@fedify/fedify/x/sveltekit` module for integrating with [SvelteKit] hook. [[#171], [#183] by Jiyu Park] Loading docs/manual/opentelemetry.md +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ spans: | `activitypub.lookup_object` | Client | Looks up the Activity Streams object. | | `http_signatures.sign` | Internal | Signs the HTTP request. | | `http_signatures.verify` | Internal | Verifies the HTTP request signature. | | `ld_signatures.sign` | Internal | Makes the Linked Data signature. | | `ld_signatures.verify` | Internal | Verifies the Linked Data signature. | | `object_integrity_proofs.sign` | Internal | Makes the object integrity proof. | | `object_integrity_proofs.verify` | Internal | Verifies the object integrity proof. | Loading src/federation/middleware.ts +1 −0 Original line number Diff line number Diff line Loading @@ -1802,6 +1802,7 @@ export class FederationImpl<TContextData> implements Federation<TContextData> { } else { jsonLd = await signJsonLd(jsonLd, rsaKey.privateKey, rsaKey.keyId, { contextLoader: this.contextLoader, tracerProvider: this.tracerProvider, }); } if (!proofCreated) { Loading src/sig/ld.ts +40 −2 Original line number Diff line number Diff line Loading @@ -114,6 +114,12 @@ export async function createSignature( * @since 1.0.0 */ export interface SignJsonLdOptions extends CreateSignatureOptions { /** * The OpenTelemetry tracer provider for tracing the signing process. * If omitted, the global tracer provider is used. * @since 1.3.0 */ tracerProvider?: TracerProvider; } /** Loading @@ -135,8 +141,40 @@ export async function signJsonLd( keyId: URL, options: SignJsonLdOptions, ): Promise<{ signature: Signature }> { const signature = await createSignature(jsonLd, privateKey, keyId, options); const tracerProvider = options.tracerProvider ?? trace.getTracerProvider(); const tracer = tracerProvider.getTracer(metadata.name, metadata.version); return await tracer.startActiveSpan( "ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href }, }, async (span) => { try { const signature = await createSignature( jsonLd, privateKey, keyId, options, ); if (span.isRecording()) { span.setAttribute("ld_signatures.type", signature.type); span.setAttribute( "ld_signatures.signature", encodeHex(decodeBase64(signature.signatureValue)), ); } return attachSignature(jsonLd, signature); } catch (error) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(error), }); throw error; } finally { span.end(); } }, ); } interface SignedJsonLd { Loading Loading
CHANGES.md +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ To be released. - Added `VerifyObjectOptions.tracerProvider` option. - Added `SignObjectOptions.tracerProvider` option. - Added `VerifyJsonLdOptions.tracerProvider` option. - Added `SignJsonLdOptions.tracerProvider` option. - Added `@fedify/fedify/x/sveltekit` module for integrating with [SvelteKit] hook. [[#171], [#183] by Jiyu Park] Loading
docs/manual/opentelemetry.md +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ spans: | `activitypub.lookup_object` | Client | Looks up the Activity Streams object. | | `http_signatures.sign` | Internal | Signs the HTTP request. | | `http_signatures.verify` | Internal | Verifies the HTTP request signature. | | `ld_signatures.sign` | Internal | Makes the Linked Data signature. | | `ld_signatures.verify` | Internal | Verifies the Linked Data signature. | | `object_integrity_proofs.sign` | Internal | Makes the object integrity proof. | | `object_integrity_proofs.verify` | Internal | Verifies the object integrity proof. | Loading
src/federation/middleware.ts +1 −0 Original line number Diff line number Diff line Loading @@ -1802,6 +1802,7 @@ export class FederationImpl<TContextData> implements Federation<TContextData> { } else { jsonLd = await signJsonLd(jsonLd, rsaKey.privateKey, rsaKey.keyId, { contextLoader: this.contextLoader, tracerProvider: this.tracerProvider, }); } if (!proofCreated) { Loading
src/sig/ld.ts +40 −2 Original line number Diff line number Diff line Loading @@ -114,6 +114,12 @@ export async function createSignature( * @since 1.0.0 */ export interface SignJsonLdOptions extends CreateSignatureOptions { /** * The OpenTelemetry tracer provider for tracing the signing process. * If omitted, the global tracer provider is used. * @since 1.3.0 */ tracerProvider?: TracerProvider; } /** Loading @@ -135,8 +141,40 @@ export async function signJsonLd( keyId: URL, options: SignJsonLdOptions, ): Promise<{ signature: Signature }> { const signature = await createSignature(jsonLd, privateKey, keyId, options); const tracerProvider = options.tracerProvider ?? trace.getTracerProvider(); const tracer = tracerProvider.getTracer(metadata.name, metadata.version); return await tracer.startActiveSpan( "ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href }, }, async (span) => { try { const signature = await createSignature( jsonLd, privateKey, keyId, options, ); if (span.isRecording()) { span.setAttribute("ld_signatures.type", signature.type); span.setAttribute( "ld_signatures.signature", encodeHex(decodeBase64(signature.signatureValue)), ); } return attachSignature(jsonLd, signature); } catch (error) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(error), }); throw error; } finally { span.end(); } }, ); } interface SignedJsonLd { Loading