---
name: "Tspi_TPM_DAA_JoinInit"
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_JoinInit"
---

# Tspi\_TPM\_DAA\_JoinInit(3)

start the DAA Join process

TCG Software Stack Developer's Reference

## NAME

Tspi\_TPM\_DAA\_JoinInit - start the DAA Join process

## SYNOPSIS

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

TSPICALL Tspi_TPM_DAA_JoinInit(
    TSS_HDAA                  hDAA,
    TSS_HTPM                  hTPM,
    TSS_HKEY                  issuer_pk,
    UINT32                    issuer_authentication_PKLength,
    TSS_HKEY*                 issuer_authentication_PK,
    UINT32                    issuer_authentication_PK_signaturesLength,
    BYTE**                    issuer_authentication_PK_signatures,
    UINT32*                   capital_UprimeLength,
    BYTE**                    capital_Uprime,
    TSS_DAA_IDENTITY_PROOF*   identity_proof,
    TSS_DAA_JOIN_SESSION*     join_session
);
```

## DESCRIPTION

Tspi\_TPM\_DAA\_JoinInit is the first out of 3 functions to execute in order to receive a DAA Credential. It verifies the keys of the DAA Issuer and computes the TPM DAA public key.

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

### issuer\_pk

The *issuer\_pk* parameter is the of the DAA Issuer public key.

### issuer\_authentication\_PKLength

The *issuer\_authentication\_PKLength* parameter is the length of the array of *issuerAuthPKs*.

### issuer\_authentication\_PK

The *issuer\_authentication\_PK* parameter is an array of RSA public keys (key chain) of\
  the DAA Issuer used to authenticate the DAA Issuer public key. The size of the modulus must\
  be TPM\_DAA\_SIZE\_issuerModulus (256).

### issuer\_authentication\_PK\_signaturesLength

The *issuer\_authentication\_PK\_signaturesLength* parameter is the length of the array of\
  issuerAuthPKSignatures. It is equal to issuerAuthPKsLength. The length of an element of the\
  array is TPM\_DAA\_SIZE\_issuerModulus (256).

### issuer\_authentication\_PK\_signatures

The *issuer\_authentication\_PK\_signatures* parameter is the array of byte arrays representing\
  signatures on the modulus of the above key chain (issuerAuthPKs) in more details, the array has\
  the following content (S(K\[1\],K\[0\]),S(K\[2\],N\[1\]),..S(K\[ k \],K\[n-1\]), S(TPM\_DAA\_ISSUER,K\[ k \])),\
  where S(msg,privateKey) denotes the signature function with msg being signed by the privateKey.

### capital\_UprimeLength

The *capital\_UprimeLength* parameter is the length of capitalUprime which is ln/8. ln is defined as the size of the RSA modulus (2048).

### capital\_Uprime

The *capital\_Uprime* parameter is U'.

### identityProof

The *identityProof* parameter is a structure containing the endorsement, platform and conformance\
  credential.

### joinSession

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

## RETURN CODES

**Tspi\_TPM\_DAA\_JoinInit** 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.

- TSS\_E\_DAA\_ISSUER\_KEY\_ERROR

  ## CONFORMING TO

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

## SEE ALSO

[**Tspi\_TPM\_DAA\_JoinCreateDaaPubKey**(3)](/Tspi_TPM_DAA_JoinCreateDaaPubKey/3.md) [**Tspi\_TPM\_DAA\_JoinStoreCredential**(3)](/Tspi_TPM_DAA_JoinStoreCredential/3.md)
