---
name: "Tspi_TPM_DAA_JoinCreateDaaPubKey"
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_JoinCreateDaaPubKey"
---

# Tspi\_TPM\_DAA\_JoinCreateDaaPubKey(3)

computes the credential request for the DAA Issuer

TCG Software Stack Developer's Reference

## NAME

Tspi\_TPM\_DAA\_JoinCreateDaaPubKey - computes the credential request for the DAA Issuer

## SYNOPSIS

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

TSS_RESULT Tspi_TPM_DAA_JoinCreateDaaPubKey(
    TSS_HDAA                    hDAA,
    TSS_HTPM                    hTPM,
    UINT32                      authenticationChallengeLength,
    BYTE*                       authenticationChallenge,
    UINT32                      nonceIssuerLength,
    BYTE*                       nonceIssuer,
    UINT32                      attributesPlatformLength,
    BYTE**                      attributesPlatform,
    TSS_DAA_JOIN_SESSION*       joinSession,
    TSS_DAA_CREDENTIAL_REQUEST* credentialRequest
);
```

## DESCRIPTION

Tspi\_TPM\_DAA\_JoinCreateDaaPubKey is the second (between **Tspi\_TPM\_DAA\_JoinInit()** and **Tspi\_TPM\_DAA\_JoinStoreCredential()**)\
  out of 3 functions to execute in order to receive a DAA Credential. It computes the credential request for the DAA Issuer, which also includes the Platforms's DAA public key and the attributes that were chosen by the Platform, and which are not visible to the DAA Issuer. The Platform can commit to the attribute values it has chosen.

## 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.

### authenticationChallengeLength

The *authenticationChallengeLength* parameter is length of authenticationChallenge (256 bytes - DAA\_SIZE\_NE1).

### authenticationChallenge

The *authenticationChallenge* parameter is the second nonce of the DAA Issuer that is encrypted by the endorsement public key. It is used as a challenge to authenticate the underlying TPM.

### nonceIssuerLength

The *nonceIssuerLength* parameter is the length of nonceIssuer (20 bytes).

### nonceIssuer

The *nonceIssuer* parameter is the nonce of the DAA Issuer.

### attributesPlatformLength

The *attributesPlatformLength* parameter is length of attributesPlatform array, which is determined by the DAA Issuer public key (). The length of a single attribute is ln/8. ln is defined as the size of the RSA modulus (2048).

### attributesPlatform

The *attributesPlatform* parameter is an array of attributes to be encoded into the DAA Credential not visible to the DAA Issuer.

### joinSession

The *joinSession* parameter is a structure containing the DAA Join session information.

### credentialRequest

The *credentialRequest* parameter is the credential request of the Platform, it contains the blinded DAA public key of the platform on which the DAA Issuer will issue the credential the blinded attributes chosen by the Platform.

## RETURN CODES

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

- TSS\_E\_INVALID\_HANDLE

  Either the DAA is not valid.

- TSS\_E\_BAD\_PARAMETER

  - TSS\_E\_INTERNAL\_ERROR

  An internal SW error has been detected.

## CONFORMING TO

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

## SEE ALSO

[**Tspi\_TPM\_DAA\_JoinInit**(3)](/Tspi_TPM_DAA_JoinInit/3.md) [**Tspi\_TPM\_DAA\_JoinStoreCredential**(3)](/Tspi_TPM_DAA_JoinStoreCredential/3.md)
