diff options
Diffstat (limited to 'packages/taler-wallet-core/src/crypto/cryptoTypes.ts')
-rw-r--r-- | packages/taler-wallet-core/src/crypto/cryptoTypes.ts | 254 |
1 files changed, 222 insertions, 32 deletions
diff --git a/packages/taler-wallet-core/src/crypto/cryptoTypes.ts b/packages/taler-wallet-core/src/crypto/cryptoTypes.ts index 922fbbfac..df25b87e4 100644 --- a/packages/taler-wallet-core/src/crypto/cryptoTypes.ts +++ b/packages/taler-wallet-core/src/crypto/cryptoTypes.ts @@ -27,13 +27,27 @@ /** * Imports. */ -import { AmountJson } from "@gnu-taler/taler-util"; +import { + AgeCommitmentProof, + AmountJson, + AmountString, + CoinEnvelope, + DenominationPubKey, + EddsaPublicKeyString, + EddsaSignatureString, + ExchangeProtocolVersion, + RefreshPlanchetInfo, + TalerProtocolTimestamp, + UnblindedSignature, + WalletAccountMergeFlags, +} from "@gnu-taler/taler-util"; export interface RefreshNewDenomInfo { count: number; - value: AmountJson; - feeWithdraw: AmountJson; - denomPub: string; + value: AmountString; + feeWithdraw: AmountString; + denomPub: DenominationPubKey; + denomPubHash: string; } /** @@ -41,11 +55,14 @@ export interface RefreshNewDenomInfo { * secret seed. */ export interface DeriveRefreshSessionRequest { + exchangeProtocolVersion: ExchangeProtocolVersion; sessionSecretSeed: string; kappa: number; meltCoinPub: string; meltCoinPriv: string; meltCoinDenomPubHash: string; + meltCoinMaxAge: number; + meltCoinAgeCommitmentProof?: AgeCommitmentProof; newCoinDenoms: RefreshNewDenomInfo[]; feeRefresh: AmountJson; } @@ -67,32 +84,7 @@ export interface DerivedRefreshSession { /** * Planchets for each cut-and-choose instance. */ - planchetsForGammas: { - /** - * Public key for the coin. - */ - publicKey: string; - - /** - * Private key for the coin. - */ - privateKey: string; - - /** - * Blinded public key. - */ - coinEv: string; - - /** - * Hash of the blinded public key. - */ - coinEvHash: string; - - /** - * Blinding key used. - */ - blindingKey: string; - }[][]; + planchetsForGammas: RefreshPlanchetInfo[][]; /** * The transfer keys, kappa of them. @@ -117,7 +109,7 @@ export interface DerivedRefreshSession { export interface DeriveTipRequest { secretSeed: string; - denomPub: string; + denomPub: DenominationPubKey; planchetIndex: number; } @@ -126,10 +118,11 @@ export interface DeriveTipRequest { */ export interface DerivedTipPlanchet { blindingKey: string; - coinEv: string; + coinEv: CoinEnvelope; coinEvHash: string; coinPriv: string; coinPub: string; + ageCommitmentProof: AgeCommitmentProof | undefined; } export interface SignTrackTransactionRequest { @@ -139,3 +132,200 @@ export interface SignTrackTransactionRequest { merchantPriv: string; merchantPub: string; } + +/** + * Request to create a recoup request payload. + */ +export interface CreateRecoupReqRequest { + coinPub: string; + coinPriv: string; + blindingKey: string; + denomPub: DenominationPubKey; + denomPubHash: string; + denomSig: UnblindedSignature; +} + +/** + * Request to create a recoup-refresh request payload. + */ +export interface CreateRecoupRefreshReqRequest { + coinPub: string; + coinPriv: string; + blindingKey: string; + denomPub: DenominationPubKey; + denomPubHash: string; + denomSig: UnblindedSignature; +} + +export interface EncryptedContract { + /** + * Encrypted contract. + */ + econtract: string; + + /** + * Signature over the (encrypted) contract. + */ + econtract_sig: EddsaSignatureString; + + /** + * Ephemeral public key for the DH operation to decrypt the encrypted contract. + */ + contract_pub: EddsaPublicKeyString; +} + +export interface EncryptContractRequest { + contractTerms: any; + contractPriv: string; + contractPub: string; + pursePub: string; + pursePriv: string; + mergePriv: string; + nonce: string; +} + +export interface EncryptContractResponse { + econtract: EncryptedContract; +} + +export interface EncryptContractForDepositRequest { + contractTerms: any; + + contractPriv: string; + contractPub: string; + + pursePub: string; + pursePriv: string; + + nonce: string; +} + +export interface EncryptContractForDepositResponse { + econtract: EncryptedContract; +} + +export interface DecryptContractRequest { + ciphertext: string; + pursePub: string; + contractPriv: string; +} + +export interface DecryptContractResponse { + contractTerms: any; + mergePriv: string; +} + +export interface DecryptContractForDepositRequest { + ciphertext: string; + pursePub: string; + contractPriv: string; +} + +export interface DecryptContractForDepositResponse { + contractTerms: any; +} + +export interface SignPurseMergeRequest { + mergeTimestamp: TalerProtocolTimestamp; + + pursePub: string; + + reservePayto: string; + + reservePriv: string; + + mergePriv: string; + + purseExpiration: TalerProtocolTimestamp; + + purseAmount: AmountString; + purseFee: AmountString; + + contractTermsHash: string; + + /** + * Flags. + */ + flags: WalletAccountMergeFlags; +} + +export interface SignPurseMergeResponse { + /** + * Signature made by the purse's merge private key. + */ + mergeSig: string; + + accountSig: string; +} + +export interface SignRefundRequest { + merchantPriv: string; + merchantPub: string; + contractTermsHash: string; + coinPub: string; + rtransactionId: number; + refundAmount: AmountString; +} + +export interface SignRefundResponse { + sig: string; +} + +export interface SignDeletePurseRequest { + pursePriv: string; +} + +export interface SignDeletePurseResponse { + sig: EddsaSignatureString; +} + +export interface SignCoinHistoryRequest { + coinPub: string; + coinPriv: string; + startOffset: number; +} + +export interface SignCoinHistoryResponse { + sig: EddsaSignatureString; +} + +export interface SignReservePurseCreateRequest { + mergeTimestamp: TalerProtocolTimestamp; + + pursePub: string; + + pursePriv: string; + + reservePayto: string; + + reservePriv: string; + + mergePriv: string; + + purseExpiration: TalerProtocolTimestamp; + + purseAmount: AmountString; + purseFee: AmountString; + + contractTermsHash: string; + + /** + * Flags. + */ + flags: WalletAccountMergeFlags; +} + +/** + * Response with signatures needed for creation of a purse + * from a reserve for a PULL payment. + */ +export interface SignReservePurseCreateResponse { + /** + * Signature made by the purse's merge private key. + */ + mergeSig: string; + + accountSig: string; + + purseSig: string; +} |