CSR¶
CSR parsing and generation helpers shared by Rust, FFI, and Python.
Csr Properties¶
Parse and build
Parse CSR properties and build a CSR.
CsrProperties::from_properties_str(properties: &str) -> Result<CsrProperties, CsrError>
CsrProperties::parse_csr_config(properties: &str) -> Result<CsrProperties, CsrError>
CsrProperties::parse_csr_config_file(path: impl AsRef<Path>) -> Result<CsrProperties, CsrError>
CsrProperties::build(&self, signer: &SigningKey, env: EnvironmentType) -> Result<Csr, CsrError>
CsrProperties.from_properties_str(properties: str) -> CsrProperties
CsrProperties.parse(properties: str) -> CsrProperties
CsrProperties.parse_file(path: str) -> CsrProperties
CsrProperties.build(key: SigningKey, env: Environment) -> Csr
FfiResult_FfiCsrProperties fatoora_csr_properties_from_str(const char* properties);
FfiResult_FfiCsrProperties fatoora_csr_properties_parse(const char* properties);
FfiResult_FfiCsrProperties fatoora_csr_properties_parse_file(const char* path);
FfiResult_FfiCsr fatoora_csr_build(FfiCsrProperties* props, FfiSigningKey* key, FfiEnvironment env);
Args
properties: CSR properties text.path: file path for properties.signer/key: signing key.env: environment used to select template name.
Returns
CsrProperties: parsed properties.Csr: CSR object built from properties.
Signing Key¶
Key generation and IO
Create and serialize signing keys.
SigningKey::generate() -> SigningKey
SigningKey::from_pem(pem: &str) -> Result<SigningKey, CsrError>
SigningKey::from_der(der: &[u8]) -> Result<SigningKey, CsrError>
SigningKey::to_pem(&self) -> Result<String, CsrError>
SigningKey::to_der(&self) -> Result<Vec<u8>, CsrError>
SigningKey.generate() -> SigningKey
SigningKey.from_pem(pem: str) -> SigningKey
SigningKey.from_der(der: bytes) -> SigningKey
SigningKey.to_pem() -> str
SigningKey.to_der() -> bytes
FfiResult_FfiSigningKey fatoora_signing_key_generate(void);
FfiResult_FfiSigningKey fatoora_signing_key_from_pem(const char* pem);
FfiResult_FfiSigningKey fatoora_signing_key_from_der(const uint8_t* der, uintptr_t len);
FfiResult_FfiString fatoora_signing_key_to_pem(FfiSigningKey* key);
FfiResult_FfiBytes fatoora_signing_key_to_der(FfiSigningKey* key);
Args
pem/der: PKCS#8 key material.
Returns
SigningKey: signing key handle.pem/der: serialized key output.
CSR¶
CSR IO
Load and serialize CSR data.
Csr::from_der(der: &[u8]) -> Result<Csr, CsrError>
Csr::to_pem(&self) -> Result<String, CsrError>
Csr::to_der(&self) -> Result<Vec<u8>, CsrError>
Csr::to_base64(&self) -> Result<String, CsrError>
Csr::to_pem_base64(&self) -> Result<String, CsrError>
Csr::subject_string(&self) -> String
Csr::extension_values_der(&self) -> Vec<Vec<u8>>
Csr.from_der(der: bytes) -> Csr
Csr.to_pem() -> str
Csr.to_der() -> bytes
Csr.to_base64() -> str
Csr.to_pem_base64() -> str
Csr.subject_string() -> str
Csr.extension_values_der() -> list[bytes]
FfiResult_FfiCsr fatoora_csr_from_der(const uint8_t* der, uintptr_t len);
FfiResult_FfiString fatoora_csr_to_pem(FfiCsr* csr);
FfiResult_FfiBytes fatoora_csr_to_der(FfiCsr* csr);
FfiResult_FfiString fatoora_csr_to_base64(FfiCsr* csr);
FfiResult_FfiString fatoora_csr_to_pem_base64(FfiCsr* csr);
FfiResult_FfiString fatoora_csr_subject_string(FfiCsr* csr);
FfiResult_FfiBytesList fatoora_csr_extension_values_der(FfiCsr* csr);
Args
der: CSR in DER format.
Returns
Csr: CSR object.pem/der/base64: serialized CSR output.
Errors¶
Errors
CsrErrorcovers parsing, missing fields, subject/SAN build failures, encoding issues, and IO.
Notes
- The template name extension is selected from EnvironmentType.
- Csr.to_pem_base64() is the value expected by the ZATCA compliance endpoint.
See also: CSR Guide