
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
@consento/api
Advanced tools
@consento/api
is the main API for build consento systems.
Under heavy development.
The consento API has a few configuration points.
const { setup } = require('@consento/api')
const api = setup({
core: require('@consento/crypto/core/sodium') // or '@consento/crypto/core/friends' depending on environment
notificationTransport // Implementation of notification transport
})
@consento/crypto
is the foundation upon which Consento is built.
The API exposes the crypto primitives through api.crypto
. e.g.:
const { Sender } = api.crypto
The Consento API comes with an end-to-end encrypted notification system.
const { notifications } = api
Any ISender
instance is able to submit notifications:
notifications.send(sender, 'Hello World')
For another device/instance to receive the notification, the device needs
to first register the matching IReceiver
notifications.subscribe(sender.newReceiver())
All messages are received through a single handler:
import { isSuccessNotification, isErrorNotification } from '@consento/api'
notifications.processor.add((message) => {
// Handle the message result.
if (isSuccessNotification(message)) {
message.body // body of the message
message.receiver // receiver for the message
message.receiverIdBase64 // base64 for the receiver
}
if (isErrorNotification(message)) {
message.code // code for the error
message.error // error object (if available)
message.receiverIdBase64 // id for the receiver
}
})
Of course it is possible to unsubscribe from receiving messages:
notifications.unsubscribe(receiver)
If the transport receives a method it needs to call
notifications.handle(idBase64, encryptedMessage)
For simple one-time reading of a request you can also subscribe, receive and unsubscribe from a channel.
const { promise, cancel } = notifications.receive(receiver)
const response = await promise // To receive the next notification
await cancel() // To cancel the receiving of a notification
You can also send a message before receiving with the sendAndReceive
helper:
const message = 'Hello World'
const { promise, cancel } = notifications.sendAndReceive({ sender, receiver }, message)
In extension it is possible to verify the body message by using a filter:
import { IEncodable } from '@consento/api'
const isStringLen32 = (body: IEncodable): body is string => typeof body === 'string' && body.length === 32
const { promise } = notifications.receive(receiver, isStringLen32)
const response: string = await promise // only resolves if a 32 character string has been sent received on the channel
... and furthermore it is possible to add a timeout to receiving a message:
const { promise } = notifications.receive(receiver, null, 1000)
try {
const data = await promise
} catch (err) {
err.code === 'timeout'
err.timeout === 1000
}
(You can also pass a filter & timeout to sendAndReceive
)
FAQs
JavasScript API for building things with consento.
The npm package @consento/api receives a total of 0 weekly downloads. As such, @consento/api popularity was classified as not popular.
We found that @consento/api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.