Sat.Certificados.Credential (sat_certificados v4.0.1)

Copy Markdown

Credencial SAT: certificado (.cer) y llave privada (.key) asociados.

Summary

Functions

true si el RFC del certificado coincide (case insensitive) con rfc.

Carga certificado y llave desde rutas de archivo.

Crea una credencial a partir de strings PEM (cer y key sin cifrar).

true si la llave privada corresponde al certificado de la credencial.

Nombre legal del titular.

Número de certificado SAT.

RFC del titular (desde el certificado).

Número de serie del certificado (hex).

Firma datos con la llave privada (SHA-256 por defecto, Base64).

Proyecta la credencial a un mapa con metadata del certificado anidada y flags de la credencial.

true si el certificado no está vencido.

Verifica una firma Base64 contra data usando la llave pública del certificado.

Types

t()

@type t() :: %Sat.Certificados.Credential{
  certificate: Sat.Certificados.Certificate.t(),
  private_key: Sat.Certificados.PrivateKey.t()
}

Functions

belongs_to?(cred, rfc)

@spec belongs_to?(t(), String.t()) :: boolean()

true si el RFC del certificado coincide (case insensitive) con rfc.

create(cer_path, key_path, password \\ nil)

@spec create(String.t(), String.t(), String.t() | nil) ::
  {:ok, t()} | {:error, term()}

Carga certificado y llave desde rutas de archivo.

from_pem(cer_pem, key_pem)

@spec from_pem(String.t(), String.t()) :: {:ok, t()} | {:error, term()}

Crea una credencial a partir de strings PEM (cer y key sin cifrar).

is_csd?(credential)

@spec is_csd?(t()) :: boolean()

Ver Sat.Certificados.Certificate.is_csd?/1.

is_fiel?(credential)

@spec is_fiel?(t()) :: boolean()

Ver Sat.Certificados.Certificate.is_fiel?/1.

key_matches_certificate?(credential)

@spec key_matches_certificate?(t()) :: boolean()

true si la llave privada corresponde al certificado de la credencial.

no_certificado(credential)

@spec no_certificado(t()) :: String.t()

Número de certificado SAT.

rfc(credential)

@spec rfc(t()) :: String.t()

RFC del titular (desde el certificado).

serial_number(credential)

@spec serial_number(t()) :: String.t()

Número de serie del certificado (hex).

sign(credential, data, algo \\ :sha256)

@spec sign(t(), iodata(), atom()) :: String.t()

Firma datos con la llave privada (SHA-256 por defecto, Base64).

to_map(cred)

@spec to_map(t()) :: map()

Proyecta la credencial a un mapa con metadata del certificado anidada y flags de la credencial.

La llave privada NO se incluye en el mapa (es PII; usar PrivateKey.sign/3 o Credential.sign/3 para firmar sin extraerla).

Opciones:

  • :keys:atom (default), :string o :existing. Misma semántica que CFDI.to_map/2. Se propaga al certificado anidado.

to_map(cred, opts)

@spec to_map(
  t(),
  keyword()
) :: map()

valid?(credential)

@spec valid?(t()) :: boolean()

true si el certificado no está vencido.

verify(credential, data, signature_b64, algo \\ :sha256)

@spec verify(t(), iodata(), String.t(), atom()) :: boolean()

Verifica una firma Base64 contra data usando la llave pública del certificado.