# Configuración

## Fichero config.yml

```yaml
server:
  port: 6789

verifactu:
  production: false

certificates:
  storage_path: ./data/certs/

crypto:
  keys_path: ./keys/
  name: "VeriFactu API"
  email: "admin@ejemplo.com"
```

## Explicación de Parametros

### server.port
Puerto TCP donde escucha la API.

### verifactu.production
- `false`: Entorno de testing (prewww2.aeat.es)
- `true`: Entorno de producción (www2.agenciatributaria.gob.es)

### certificates.storage_path
Directorio donde se almacenan los certificados registrados.

### crypto.keys_path
Directorio donde se almacenan las claves RSA.

### crypto.name
Nombre para generar nuevas claves RSA (si no existen).

### crypto.email
Email para generar nuevas claves RSA.

## Variables de Entorno

```bash
# Sobrescribir configuración
VERIFACTU_PORT=8080
VERIFACTU_PRODUCTION=true
```

## Estructura de Directorios

```
proyecto/
├── api/
├── internal/
├── verifactu/
├── documentacion/
├── test/
├── data/
│   └── certs/         # Certificados registrados
├── keys/              # Claves RSA
├── config.yml         # Configuración
├── validate_cert.ps1 # Script de validación
└── main.go
```

## Primera Ejecución

1. Compilar: `go build -o verifactu-api.exe ./main.go`
2. Ejecutar: `./verifactu-api.exe`
3. La API genera claves RSA automaticamente
4. Crea estructura de directorios

## Cambio de Entorno

Para cambiar de test a producción:

1. Editar `config.yml`:
```yaml
verifactu:
  production: true
```

2. Reiniciar la API

## Puertos

- 6789: Puerto por defecto
- 443: HTTPS producción
- 80: HTTP (no recomendado)