Vchasno Signer
Library to work with private keys, sign data and verify signatures.
Instalation
npm install -E @evo/vchasno-signer
Usage
import vchasnoSigner from '@evo/vchasno-signer';
const configObject = { proxyServiceUrl: '/internal-api/proxy' };
await vchasnoSigner.init(configObject);
const key = await vchasnoSigner.readKey(keyFile, password, caServerIdx, certificateFiles);
const eSign = vchasnoSigner.signData(data, key);
const signInfo = vchasnoSigner.verifySign(data, eSign);
Config object
{
checkIsPowerCertificate: true,
downloadSignLibraryUrl: null,
maxFileSize: undefined,
pathToLibrary: '/path/to/library',
proxyServiceUrl: '/internal-api/proxy',
useMainThread: false,
}
Read private key
Read PK file to get key object with PK content, associated certificates, information about PK and actual certificate.
Parameters:
keyFile: PK file in Blob format
password: PK password
caServerIdx: PK vendor, you can get list of supported CA servers with getCAServers function
certificateFiles: optional parameter, some CA use certificates from file, so we need to pass PK file and associated certificates file/files. You can use getCAServerSettings function to find out which certificates type are used.
const caServers = vchasnoSigner.getCAServers();
const caServerSettings = vchasnoSigner.getCAServerSettings(caServers[idx]);
caServerSettings.loadCertsFromFile;
const key = await vchasnoSigner.readKey(keyFile, password, caServerIdx, certificateFiles);
key.keyData
key.password
key.certificates
key.keyInfo
key.certificateInfo
Sign data
Sign data with PK, verify signature and return signature object.
Parameters:
data: data to sign in Blob, ArrayBuffer, or Uint8Array format
key: key object from readKey function
const eSign = vchasnoSigner.signData(data, key);
Also data can be signed internaly in p7s container
const [eSign, p7s] = vchasnoSigner.signDataInternal(data, key);
Verify signature
Verify association between data and signature, return information about signature.
Parameters:
data: data to sign in Blob, ArrayBuffer or Uint8Array format
eSign: signature string from signData function
const signInfo = vchasnoSigner.verifySign(data, eSign);
For internal signatures need to pass only p7s container.
Parameters:
p7s: p7s container from signDataInternal function
const signInfo = vchasnoSigner.verifySignInternal(p7s);
For library developers
Autodeploy
To deploy new version:
npm version <patch|minor|major>
git push origin --atomic HEAD v0.0.1
Update certificates
- Update CAs.json, CACertificates
- Docker with just
# buid container if needed
just docker-build-image
# update certificates
just docker-update-ca-servers
- Node
wget --output-document ./scripts/rawCAs.json https://iit.com.ua/download/productfiles/CAs.json
wget --output-document ./src/files/CACertificates.p7b https://iit.com.ua/download/productfiles/CACertificates.p7b
node scripts/generateCAServers.js
- Add new tag