Go
Go
Sign a Byte Array to Create an Opaque Signature in a Byte Array
See more Digital Signatures Examples
Signs data contained in a byte array to produce an opaque signature (also in a byte array). An opaque signature is a PKCS7 signature (also known as CAdES) that embeds the signed data. Also shows how to verify the signature and extract the original data.Chilkat Go Downloads
success := false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
cert := chilkat.NewCert()
success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if success == false {
fmt.Println(cert.LastErrorText())
cert.DisposeCert()
return
}
fac := chilkat.NewFileAccess()
var fileBytes []byte
fileBytes = fac.ReadEntireFile("qa_data/pdf/sample.pdf")
if fac.LastMethodSuccess() != true {
fmt.Println(fac.LastErrorText())
cert.DisposeCert()
fac.DisposeFileAccess()
return
}
crypt := chilkat.NewCrypt2()
success = crypt.SetSigningCert(cert)
// We can sign any type of file.
var sigBytes []byte
sigBytes = crypt.OpaqueSignBytes(fileBytes)
if crypt.LastMethodSuccess() != true {
fmt.Println(crypt.LastErrorText())
cert.DisposeCert()
fac.DisposeFileAccess()
crypt.DisposeCrypt2()
return
}
success = fac.WriteEntireFile("qa_output/sample.pdf.p7m",sigBytes)
if fac.LastMethodSuccess() != true {
fmt.Println(fac.LastErrorText())
cert.DisposeCert()
fac.DisposeFileAccess()
crypt.DisposeCrypt2()
return
}
// We can verify the opaque signature and extract the original data like this
var originalData []byte
originalData = crypt.OpaqueVerifyBytes(sigBytes)
if crypt.LastMethodSuccess() != true {
fmt.Println(crypt.LastErrorText())
cert.DisposeCert()
fac.DisposeFileAccess()
crypt.DisposeCrypt2()
return
}
success = fac.WriteEntireFile("qa_output/sample.pdf",originalData)
if fac.LastMethodSuccess() != true {
fmt.Println(fac.LastErrorText())
cert.DisposeCert()
fac.DisposeFileAccess()
crypt.DisposeCrypt2()
return
}
fmt.Println("Signature is verified and the original data was extracted.")
cert.DisposeCert()
fac.DisposeFileAccess()
crypt.DisposeCrypt2()