First working version

This commit is contained in:
Abel Luck 2025-06-03 13:23:45 +02:00
parent 63ed6316bc
commit d8eda81e0e
31 changed files with 3134 additions and 0 deletions

View file

@ -0,0 +1,80 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "tor_obfs4_bridge_line Data Source - tor"
subcategory: ""
description: |-
Generates a complete Tor bridge line using obfs4 state and network details
---
# tor_obfs4_bridge_line (Data Source)
Generates a complete Tor bridge line using obfs4 state and network details
## Example Usage
```terraform
# Copyright (c) HashiCorp, Inc.
terraform {
required_providers {
tor = {
source = "guardianproject/tor"
}
}
}
provider "tor" {}
# Example: Generate a bridge line from existing components
data "tor_obfs4_bridge_line" "example" {
ip_address = "192.0.2.1"
port = 443
identity_fingerprint_sha1 = "1234567890abcdef1234567890abcdef12345678"
obfs4_state_certificate = "example-cert-value"
obfs4_state_iat_mode = 0
}
output "bridge_line" {
description = "Generated bridge line for clients"
value = data.tor_obfs4_bridge_line.example.bridge_line
}
# Example: Complete workflow integration
resource "tor_relay_identity_rsa" "bridge" {}
resource "tor_relay_identity_ed25519" "bridge" {}
resource "tor_obfs4_state" "bridge" {
rsa_identity_private_key = tor_relay_identity_rsa.bridge.private_key_pem
ed25519_identity_private_key = tor_relay_identity_ed25519.bridge.private_key_pem
}
data "tor_obfs4_bridge_line" "integrated" {
ip_address = "10.0.0.1"
port = 9001
identity_fingerprint_sha1 = tor_relay_identity_rsa.bridge.public_key_fingerprint_sha1
obfs4_state_certificate = tor_obfs4_state.bridge.certificate
obfs4_state_iat_mode = tor_obfs4_state.bridge.iat_mode
}
output "integrated_bridge_line" {
description = "Bridge line from integrated workflow"
value = data.tor_obfs4_bridge_line.integrated.bridge_line
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `identity_fingerprint_sha1` (String) SHA1 fingerprint of the RSA identity key
- `ip_address` (String) Bridge IP address
- `obfs4_state_certificate` (String) Base64-encoded certificate from tor_obfs4_state resource
- `obfs4_state_iat_mode` (Number) Inter-Arrival Time mode from tor_obfs4_state resource
- `port` (Number) Bridge port number
### Read-Only
- `bridge_line` (String) Complete bridge line ready for client use
- `id` (String) Data source identifier

75
docs/index.md Normal file
View file

@ -0,0 +1,75 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "tor Provider"
subcategory: ""
description: |-
The Tor provider generates cryptographic identity materials for obfs4 Tor bridges, enabling stateless bridge deployments.
---
# tor Provider
The Tor provider generates cryptographic identity materials for obfs4 Tor bridges, enabling stateless bridge deployments.
## Example Usage
```terraform
# Copyright (c) HashiCorp, Inc.
terraform {
required_providers {
tor = {
source = "guardianproject/tor"
}
}
}
provider "tor" {}
# Generate relay identity keys
resource "tor_relay_identity_rsa" "bridge" {}
resource "tor_relay_identity_ed25519" "bridge" {}
# Generate obfs4 state using the identity keys
resource "tor_obfs4_state" "bridge" {
rsa_identity_private_key = tor_relay_identity_rsa.bridge.private_key_pem
ed25519_identity_private_key = tor_relay_identity_ed25519.bridge.private_key_pem
iat_mode = 1
}
# Generate bridge line for client distribution
data "tor_obfs4_bridge_line" "bridge" {
ip_address = "192.0.2.1"
port = 443
identity_fingerprint_sha1 = tor_relay_identity_rsa.bridge.public_key_fingerprint_sha1
obfs4_state_certificate = tor_obfs4_state.bridge.certificate
obfs4_state_iat_mode = tor_obfs4_state.bridge.iat_mode
}
# Output bridge configuration for deployment
output "rsa_identity_pem" {
description = "RSA identity private key for bridge configuration"
value = tor_relay_identity_rsa.bridge.private_key_pem
sensitive = true
}
output "ed25519_identity_pem" {
description = "Ed25519 identity private key for bridge configuration"
value = tor_relay_identity_ed25519.bridge.private_key_pem
sensitive = true
}
output "obfs4_state_json" {
description = "Complete obfs4 state for bridge runtime"
value = tor_obfs4_state.bridge.state_json
sensitive = true
}
output "bridge_line" {
description = "Complete bridge line for client use"
value = data.tor_obfs4_bridge_line.bridge.bridge_line
}
```
<!-- schema generated by tfplugindocs -->
## Schema

View file

@ -0,0 +1,36 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "tor_obfs4_state Resource - tor"
subcategory: ""
description: |-
Generates obfs4 state and certificate for Tor bridges using external relay identity keys
---
# tor_obfs4_state (Resource)
Generates obfs4 state and certificate for Tor bridges using external relay identity keys
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `ed25519_identity_private_key` (String, Sensitive) Ed25519 identity private key in PEM format (from tor_relay_identity_ed25519 resource)
- `rsa_identity_private_key` (String, Sensitive) RSA identity private key in PEM format (from tor_relay_identity_rsa resource)
### Optional
- `iat_mode` (Number) Inter-Arrival Time mode (0=none, 1=enabled, 2=paranoid)
### Read-Only
- `bridge_line` (String) Complete bridge line ready for client use (placeholder IP and fingerprint)
- `certificate` (String) Base64-encoded certificate for bridge lines
- `drbg_seed` (String, Sensitive) 24-byte DRBG seed in hex format
- `id` (String) Resource identifier
- `node_id` (String) 20-byte node ID in hex format
- `private_key` (String, Sensitive) 32-byte Curve25519 private key in hex format
- `public_key` (String) 32-byte Curve25519 public key in hex format
- `state_json` (String) Complete obfs4 state in JSON format

View file

@ -0,0 +1,24 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "tor_relay_identity_ed25519 Resource - tor"
subcategory: ""
description: |-
Generates Ed25519 private key for Tor relay identity as required by the Tor specification.
---
# tor_relay_identity_ed25519 (Resource)
Generates Ed25519 private key for Tor relay identity as required by the Tor specification.
<!-- schema generated by tfplugindocs -->
## Schema
### Read-Only
- `algorithm` (String) Name of the algorithm used when generating the private key (always 'Ed25519')
- `id` (String) Unique identifier based on public key fingerprint
- `private_key_pem` (String, Sensitive) Private key data in PEM (RFC 1421) format
- `public_key_fingerprint_sha256` (String) SHA256 fingerprint of the public key in hex format
- `public_key_pem` (String) Public key data in PEM (RFC 1421) format

View file

@ -0,0 +1,25 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "tor_relay_identity_rsa Resource - tor"
subcategory: ""
description: |-
Generates 1024-bit RSA private key for Tor relay identity as required by the Tor specification.
---
# tor_relay_identity_rsa (Resource)
Generates 1024-bit RSA private key for Tor relay identity as required by the Tor specification.
<!-- schema generated by tfplugindocs -->
## Schema
### Read-Only
- `algorithm` (String) Name of the algorithm used when generating the private key (always 'RSA')
- `id` (String) Unique identifier based on public key fingerprint
- `private_key_pem` (String, Sensitive) Private key data in PEM (RFC 1421) format
- `public_key_fingerprint_sha1` (String) SHA1 fingerprint of the public key in hex format
- `public_key_fingerprint_sha256` (String) SHA256 fingerprint of the public key in hex format
- `public_key_pem` (String) Public key data in PEM (RFC 1421) format