open-index/open-npm huggingface dataset:
npm package: @peersky/eth-auth
Description: Create and verify authentication token signed by an EOA
Author: Peersky
Latest version: 2.1.1

# Ethereum Address Authentication

Build an authentication workflow with using Ethereum address and EIP712.

token is stored as base64 encoded string of an object of following interface:

```ts
interface TokenInterface {
  address: string;
  deadline: number;
  signature: string;
}
```

Deadline is stored as number (in seconds).

install:
`yarn add @peersky/eth-auth`

### Frontend

API:

```ts
/**
 * Signs an access token
 * @function signAccessToken
 * @param  {String} signer  Signer who will sign the token
 * @param  {String} duration How long token should be valid [Seconds]
 * @param  {String} domain Optional EIP712 compliant domain data
 * @return {Promise<string>} base64 encoded token
 */
function signAccessToken(
  signer: Wallet | JsonRpcSigner | HDNodeWallet,
  duration: number,
  domain?: TypedDataDomain
): Promise<string>;
/**
 * Parses a base64 encoded token
 * @function parseToken
 * @param  {String} token token
 * @return {TokenInterface}
 */
function parseToken(token: string): TokenInterface;
/**
 * Checks if token is outdated
 * @function isOutdated
 * @param  {string | number} deadline in seconds since midnight, January 1, 1970 UTC.
 * @return {boolean}
 */
function isOutdated(deadline: number | string): boolean;
/**
 * Validates if token is legit
 * @function validateToken
 * @param  {string} token base64 encoded token
 * @param {domain} domain Optional EIP712 domain data
 * @return {boolean} If true => token is legit
 */
function validateToken(token: string, domain?: TypedDataDomain): boolean;
/**
 * Tries to get an authenticated addess from provided token.
 * Will Throw if authentication fails.
 * @function tryGetAuthenticated
 * @param  {string} token base64 encoded token
 * @param {domain} domain Optional EIP712 domain data
 * @return {boolean} If true => token is legit
 */
function tryGetAuthenticated(token: string, domain?: TypedDataDomain): string;
```
npm package: @peerstate/babysitter
Description: service for managing identities and key exchanges for peerstate applications
Author: Bryan Goldstein
Latest version: 1.0.5

# p2p Babysitter

Because someone has to make sure everyone is playing nice.

This service is built to fill any gaps someone coming from a client-server architecture to a p2p one might not like. It maintains central control and moderation while enabling the benefits of direct communication that isn't totally reliant on a remote server.

## Usage

It is recommended to configure babysitter with environment variables, but it can also be confgured with CLI flags. Assuming you have your environment set up like the `.env.example`, running babysitter is as simple as:

`npx @peerstate/babysitter`

## What's there

So far it consists of:

1. login, logout, and key refresh functionality

- login with username and password
- logout will revoke tokens
- key refresh will revoke and reissue tokens

2. jwt tokens containing client's public key and identifying information for peers to prove identities

- identifying information is customizable
- key pair must be generated by client

3. cookie based sessions stored in redis

- this gives us security to the server with a token that cannot be accessed through scripts

4. endpoint to establish shared secrets between parties

- this is for forward security so that after the quantum crypto-apocalypse we only leak our secrets to the NSA and China