> ## Documentation Index
> Fetch the complete documentation index at: https://pay-docs.holdstation.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Key Generation

Partners generate an Ed25519 key pair. The **private key** is used by the partner to sign requests.

Once generated, send the **base64-encoded public key** to the Holdstation team so they can register it on your account. Keep the private key secret — never share it with anyone, including Holdstation.

<Note>
  To rotate your key later, see [Upload Public Key](/guides/partner-authentication-signed-api/upload-verify-key).
</Note>

#### Go Example

```go theme={null}
package main

import (
    "crypto/ed25519"
    "encoding/base64"
    "fmt"
)

func main() {
    // Generate Ed25519 key pair
    publicKey, privateKey, _ := ed25519.GenerateKey(nil)

    // Base64 encode for storage/transmission
    privateKeyB64 := base64.StdEncoding.EncodeToString(privateKey)
    publicKeyB64 := base64.StdEncoding.EncodeToString(publicKey)

    fmt.Println("Private Key (keep secret):", privateKeyB64)
    fmt.Println("Public Key (verify_key):", publicKeyB64)
}
```

#### Shell Script Example

```shell theme={null}
openssl genpkey -algorithm ed25519 -out priv.pem
PRIVATE_KEY=$(cat priv.pem | openssl pkey -outform DER | tail -c 64 | base64)
VERIFY_KEY=$(openssl pkey -in priv.pem -pubout -outform DER | tail -c 32 | base64)
echo "Private Key (keep secret): $PRIVATE_KEY"
echo "Public Key (verify_key): $VERIFY_KEY"
```
