OPRF
![npm version](https://badge.fury.io/js/oprf.svg)
Oblivious pseudo-random function over an elliptic curve (ED25519)
Installation
npm install oprf
Security Guarantees
A client has input x while a server holds key k. The client receives the output of fk(x) for some pseudorandom function family fk. The server learns nothing.
Dependencies
Steps
1.) Client: hash input and mask it using a randomly generated 32-byte number
function maskInput(input: string): maskedData
2.) Server: salt the masked point using a secret key
function saltInput(maskedPoint: Array<Number>, key: string): Array<Number>
3.) Client: unmask the salted point from the server to get a high-entropy output
function unmaskInput(salted: Array<Number>, mask: BN): Array<Number>
Implementation inspired by Burns et. al.
https://pdfs.semanticscholar.org/5d33/ea1d3fda454875a6a6ee7c535c80c74af512.pdf