---
name: "Tspi_TPM_DAA_Sign"
section: "3"
platform: "linux"
package: "libtspi-dev"
version: "0.3.9-3+wheezy1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Tspi_TPM_DAA_Sign"
---

# Tspi\_TPM\_DAA\_Sign(3)

creates a DAA Signature that proofs ownership of the DAA Credential

TCG Software Stack Developer's Reference

## NAME

Tspi\_TPM\_DAA\_Sign - creates a DAA Signature that proofs ownership of the DAA Credential

## SYNOPSIS

```
#include <tss/tss_typedef.h>
#include <tss/tss_structs.h>
#include <tss/tspi.h>

TSS_RESULT Tspi_TPM_DAA_Sign(
    TSS_HDAA                    hDAA,
    TSS_HTPM                    hTPM,
    TSS_HKEY                    hDaaCredential,
    TSS_DAA_SELECTED_ATTRIB     revealAttributes,
    UINT32                      verifierBaseNameLength,
    BYTE*                       verifierBaseName,
    UINT32                      verifierNonceLength,
    BYTE*                       verifierNonce,
    TSS_DAA_SIGN_DATA           signData,
    TSS_DAA_SIGNATURE*          daaSignature
);
```

## DESCRIPTION

Tspi\_TPM\_DAA\_Sign creates a DAA Signature that proofs ownership of the DAA Credential and includes a signature on either a public AIK or a message. If anonymity revocation is enabled, the value Nv is not provided in the clear anymore but encrypted under the public key of anonymity revocation authority, a trusted third party (TTP). Thus the DAA Verifier cannot check for revocation or link a transaction/signature to prior ones. Depending on how is chosen, the protocol either allows implementing anonymity revocation (i.e., using the DAA Issuer's long-term base name  as the DAA Verifier's base name ), or having the TTP doing the linking of different signatures for the same DAA Verifier (i.e., using the DAA Verifier's base name ).

## PARAMETERS

### hDAA

The *hDAA* parameter is used to specify the handle of the DAA object.

### hTPM

The *hTPM* parameter is the handle to the TPM object.

### hDaaCredential

The *hDaaCredential* parameter is the Handle of the DAA Credential.

### revealAttributes

The *revealAttributes* parameter is the attributes which the credential owner wants to reveal to the DAA Verifier.

### verifierBaseNameLength

The *verifierBaseNameLength* parameter is the Length of verifierBaseName.

### verifierBaseName

The *verifierBaseName* parameter is the base name chosen by the DAA Verifier. If it equals to null, the platform chooses a random base name.

### verifierNonceLength

The *verifierNonceLength* parameter is the length of verifierNonceName (20 bytes).

### verifierNonce

The *verifierNonce* parameter is the nonce created by the DAA Verifier.

### signData

The *signData* parameter is the handle of the received DAA Credential.

### daaSignature

The *daaSignature* parameter is the DAA signature containing the proof of ownership of the DAA Credential, as well as a signature on either an AIK or a message.

## RETURN CODES

**Tspi\_TPM\_DAA\_Sign** returns TSS\_SUCCESS on success, otherwise one of the following values is returned:

- TSS\_E\_INVALID\_HANDLE

  Either the DAA or the TPM handler is not valid.

- TSS\_E\_BAD\_PARAMETER

  - TSS\_E\_INTERNAL\_ERROR

  An internal SW error has been detected.

## CONFORMING TO

**Tspi\_TPM\_DAA\_Sign** conforms to the Trusted Computing Group Software Specification version 1.2

## SEE ALSO
