go-pkcs12-plus
Librería Go universal para cargar certificados PKCS#12 con soporte extendido para formatos legacy y algoritmos de encriptación diversos.
Características
- ✅ Soporte para múltiples algoritmos de encriptación (RC2, 3DES, AES)
- ✅ Compatible con certificados de cualquier entidad certificadora
- ✅ Fallback automático con OpenSSL para certificados legacy
- ✅ Soporte para archivos PEM
- ✅ Conversión automática BER → DER
- ✅ Sin dependencias externas en modo puro Go
- ✅ CGO opcional para máxima compatibilidad
Instalación
go get github.com/diegofxm/go-pkcs12-plus
Uso Básico
package main
import (
"log"
"github.com/diegofxm/go-pkcs12-plus"
)
func main() {
// Cargar certificado P12
cert, key, err := pkcs12plus.Load("certificado.p12", "password")
if err != nil {
log.Fatal(err)
}
// Usar certificado y clave privada
// ...
}
Métodos de Carga
La librería intenta múltiples métodos automáticamente:
- go-pkcs12 estándar (rápido, sin dependencias)
- go-pkcs12 DecodeChain (soporta cadenas de certificados)
- go-pkcs12 ToPEM (compatible con más formatos)
- Conversión BER → DER (para certificados legacy)
- OpenSSL via CGO (máxima compatibilidad, requiere CGO)
Compilación
Sin CGO (Go puro)
go build
Con CGO (soporte OpenSSL)
CGO_ENABLED=1 go build
Requisitos
- Go 1.21+
- OpenSSL (solo si se compila con CGO)
Certificados Soportados
- ✅ CAMERFIRMA (Colombia)
- ✅ GSE (Colombia)
- ✅ Certicámara (Colombia)
- ✅ Certificados OpenSSL legacy
- ✅ Certificados Java keystore
- ✅ Cualquier certificado PKCS#12 estándar
Casos de Uso
Facturación Electrónica
Ideal para sistemas de facturación electrónica que necesitan soportar certificados de múltiples proveedores.
Firma Digital
Perfecto para aplicaciones que requieren firma digital con certificados de diversas entidades certificadoras.
Licencia
MIT
Contribuciones
Las contribuciones son bienvenidas. Por favor abre un issue o PR.
Autor
Diego Fernando Montoya - @diegofxm