<header class="mobile-header">
<button (click)="w3Open()">☰</button>
<span>Devolutions Crypto</span>
</header>
<div class="page-inner">
<div class="page-heading">
<fa-icon size="3x" [icon]="faUserSecret"></fa-icon>
<h1>Secret Sharing</h1>
</div>
<div class="card">
<div class="card-title">Shares Generation</div>
<div class="card-body">
<form [formGroup]="generateSharesForm" (ngSubmit)="generateShares()">
<div class="field">
<label>Number of shares</label>
<input type="number" formControlName="nbShares" required placeholder="E.g. 5">
</div>
<div class="field">
<label>Threshold</label>
<input type="number" formControlName="threshold" required placeholder="E.g. 3">
</div>
<div class="field">
<label>Secret length</label>
<input type="text" formControlName="secretLength" placeholder="Optional">
</div>
<div class="field">
<button type="submit" class="btn btn-primary">Generate</button>
</div>
<div class="field">
<span class="result-label">Result</span>
<ul class="key-list">
@for (key of generatedKeysBase64; track key) {
<li>{{ key }}</li>
}
</ul>
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-title">Join Shares</div>
<div class="card-body">
<form [formGroup]="joinSharesForm" (ngSubmit)="joinShares()">
<div class="field">
<label>Add a share</label>
<input type="text" formControlName="addSharekey" required placeholder="Paste a share">
</div>
<div class="field">
<button type="button" class="btn btn-primary" (click)="addShare()">Add Share</button>
</div>
<div class="field">
<span class="result-label">Shares added</span>
<ul class="key-list">
@for (key of joinedSharesToShow; track key) {
<li>{{ key }}</li>
}
</ul>
</div>
<div class="field">
<button type="submit" class="btn btn-primary">Join Shares</button>
</div>
<div class="field">
<span class="result-label">Result</span>
<textarea rows="5" formControlName="joinResult" placeholder="Reconstructed secret will appear here"></textarea>
</div>
</form>
</div>
</div>
</div>