crypto-pro-js/examples/angular/src/app/crypto-pro/crypto-pro.component.ts

145 lines
4.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Component, OnInit } from '@angular/core';
import {
getCertificate,
getUserCertificates,
getSystemInfo,
isValidSystemSetup,
createHash,
createDetachedSignature,
createAttachedSignature,
SystemInfo,
Certificate
} from 'crypto-pro';
@Component({
selector: 'app-crypto-pro',
templateUrl: './crypto-pro.component.html',
styleUrls: ['./crypto-pro.component.css']
})
export class CryptoProComponent implements OnInit {
public message = 'Привет мир!';
public certificateList: Certificate[] = [];
public hash: string = null;
public hashStatus = 'Не вычислен';
public detachedSignature = true;
public thumbprint: string = null;
public signature: string = null;
public signatureStatus = 'Не создана';
public systemInfo: SystemInfo & {
isValidSystemSetup: boolean;
};
public certificateListError: string = null;
public certificateInfoError: string = null;
public hashError: string = null;
public signatureError: string = null;
public systemInfoError: string = null;
public certInfo = null;
constructor() { }
public ngOnInit(): void {
this.displayCertificates();
this.displaySystemInfo();
}
public async createSignature(thumbprint) {
this.hash = null;
this.hashError = null;
this.signature = null;
this.signatureError = null;
this.hashStatus = 'Вычисляется...';
try {
this.hash = await createHash(this.message);
} catch (error) {
this.hashError = error.message;
return;
}
this.hashStatus = 'Не вычислен';
this.signatureStatus = 'Создается...';
if (this.detachedSignature) {
try {
this.signature = await createDetachedSignature(thumbprint, this.hash);
} catch (error) {
this.signatureError = error.message;
}
this.signatureStatus = 'Не создана';
return;
}
try {
this.signature = await createAttachedSignature(thumbprint, this.message);
} catch (error) {
this.signatureError = error.message;
}
this.signatureStatus = 'Не создана';
}
public async showCertInfo(thumbprint) {
this.certInfo = null;
this.certificateInfoError = null;
try {
const certificate = await getCertificate(thumbprint);
this.certInfo = {
name: certificate.name,
issuerName: certificate.issuerName,
subjectName: certificate.subjectName,
thumbprint: certificate.thumbprint,
validFrom: certificate.validFrom,
validTo: certificate.validTo,
isValid: await certificate.isValid(),
version: await certificate.getCadesProp('Version'),
base64: await certificate.exportBase64(),
algorithm: await certificate.getAlgorithm(),
extendedKeyUsage: await certificate.getExtendedKeyUsage(),
ownerInfo: await certificate.getOwnerInfo(),
issuerInfo: await certificate.getIssuerInfo(),
decodedExtendedKeyUsage: await certificate.getDecodedExtendedKeyUsage(),
'1.3.6.1.4.1.311.80.1': await certificate.hasExtendedKeyUsage('1.3.6.1.4.1.311.80.1'),
'[\'1.3.6.1.5.5.7.3.2\', \'1.3.6.1.4.1.311.10.3.12\']': await certificate.hasExtendedKeyUsage([
'1.3.6.1.5.5.7.3.2',
'1.3.6.1.4.1.311.10.3.12'
]),
'1.3.6.1.4.1.311.80.2': await certificate.hasExtendedKeyUsage('1.3.6.1.4.1.311.80.2'),
'\'1.3.6.1.5.5.7.3.3\', \'1.3.6.1.4.1.311.10.3.12\'': await certificate.hasExtendedKeyUsage([
'1.3.6.1.5.5.7.3.3',
'1.3.6.1.4.1.311.10.3.12'
]),
};
} catch (error) {
this.certificateInfoError = error.message;
}
}
private async displayCertificates() {
this.certificateListError = null;
try {
this.certificateList = await getUserCertificates();
} catch (error) {
this.certificateListError = error.message;
}
}
private async displaySystemInfo() {
this.systemInfoError = null;
try {
this.systemInfo = {
...await getSystemInfo(),
isValidSystemSetup: await isValidSystemSetup()
};
} catch (error) {
this.systemInfoError = error.message;
}
}
}