DataFlex
DataFlex
Generate CSR with Uncommon Fields
See more CSR Examples
Demonstrates how to generate a new RSA key and a Certificate Signing Request (CSR) for this:csr.common.name=Admin forInformation-MainShop csr.serial.number=1-XYZ|2-2.0|3-999695 csr.organization.identifier=990099994100099 csr.organization.unit.name=9999910000 csr.organization.name=9999910000 csr.country.name=SA csr.invoice.type=1100 csr.location.address=King Fahed Road csr.industry.business.category=MainOffice
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoRsa
Variant vPrivKey
Handle hoPrivKey
Handle hoCsr
String sPemStr
Handle hoFac
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// First generate an RSA private key.
Get Create (RefClass(cComChilkatRsa)) To hoRsa
If (Not(IsComObjectCreated(hoRsa))) Begin
Send CreateComObject of hoRsa
End
// Generate a random 2048-bit RSA key.
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComGenKey Of hoRsa 2048 vPrivKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRsa To sTemp1
Showln sTemp1
Procedure_Return
End
// Create the CSR object and set properties.
Get Create (RefClass(cComChilkatCsr)) To hoCsr
If (Not(IsComObjectCreated(hoCsr))) Begin
Send CreateComObject of hoCsr
End
Set ComCommonName Of hoCsr To "Admin forInformation-MainShop"
// Country Name (2 letter code)
Set ComCountry Of hoCsr To "SA"
// Organization Name (eg, company)
Set ComCompany Of hoCsr To "9999910000"
// Organizational Unit Name (eg, secion/division)
Set ComCompanyDivision Of hoCsr To "9999910000"
// See https://www.alvestrand.no/objectid/2.5.4.html for OIDs for the following fields:
// csr.serial.number=1-XYZ|2-2.0|3-999695
// 2.5.4.5 - id-at-serialNumber
Get ComSetSubjectField Of hoCsr "2.5.4.5" "1-XYZ|2-2.0|3-999695" "UTF8String" To iSuccess
// csr.organization.identifier=990099994100099
// 2.5.4.45 - id-at-uniqueIdentifier Don't know if this is correct.
Get ComSetSubjectField Of hoCsr "2.5.4.45" "1100" "UTF8String" To iSuccess
// csr.invoice.type=1100
// Don't know what this OID would be...
Get ComSetSubjectField Of hoCsr "2.5.4.99" "1100" "UTF8String" To iSuccess
// csr.location.address=King Fahed Road
// 2.5.4.9 - id-at-streetAddress
Get ComSetSubjectField Of hoCsr "2.5.4.9" "King Fahed Road" "UTF8String" To iSuccess
// csr.industry.business.category=MainOffice
// 2.5.4.15 - id-at-businessCategory
Get ComSetSubjectField Of hoCsr "2.5.4.15" "MainOffice" "UTF8String" To iSuccess
// Create the CSR using the private key.
Get pvComObject of hoPrivKey to vPrivKey
Get ComGenCsrPem Of hoCsr vPrivKey To sPemStr
Get ComLastMethodSuccess Of hoCsr To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoCsr To sTemp1
Showln sTemp1
Procedure_Return
End
// Save the private key and CSR to a files.
Get ComSavePkcs8EncryptedPemFile Of hoPrivKey "password" "qa_output/privKey1.pem" To iSuccess
Get Create (RefClass(cComCkFileAccess)) To hoFac
If (Not(IsComObjectCreated(hoFac))) Begin
Send CreateComObject of hoFac
End
Get ComWriteEntireTextFile Of hoFac "qa_output/csr1.pem" sPemStr "utf-8" False To iSuccess
// Show the CSR.
Showln sPemStr
// Sample output:
// The CSR PEM can be checked here:
// https://www.networking4all.com/en/support/tools/csr+check/
// Copy-and-paste the PEM into the online CSR Decoding / CSR Verification form
// -----BEGIN CERTIFICATE REQUEST-----
// MIIC6jCCAdICAQAwgaQxITAfBgNVBAMMGG15c3ViZG9tYWluLm15ZG9tYWluLmNv
// ...
// ...
// hJnYCvjzFz4O9VtT+JtP9ldRHWV3KpZ8ne3AjD+F
// -----END CERTIFICATE REQUEST-----
End_Procedure