项目作者: nullboundary

项目描述 :
A simple hook to libcrypto to produce pkcs7 signatures for golang
高级语言: Go
项目地址: git://github.com/nullboundary/gocertsigner.git
创建时间: 2015-01-14T05:10:59Z
项目社区:https://github.com/nullboundary/gocertsigner

开源协议:

下载


Go Report Card

  1. Name : GoCertSigner Library
  2. Author : Noah Shibley, http://socialhardware.net
  3. Date : July 8th 2014
  4. Version : 0.1
  5. Notes : A cgo layer that uses openssl to produce pkcs7 signatures for golang
  6. Dependencies: openssl or libressl: libcrypto

Function List:

  1. //signs a document using a p12 cert producing a pkcs7 signature
  2. SignWithP12(doc []byte, pkcs12 []byte, pkcsPass string, caCert []byte) (signature []byte, err error)
  3. //signs a document using a x509 der cert with a pem Key producing a pkcs7 signature
  4. SignWithX509PEM(doc []byte, x509Cert []byte, pemKey []byte, keyPass string, caCert []byte) (signature []byte, err error)

Example:

  1. package main
  2. import (
  3. s "github.com/nullboundary/gocertsigner"
  4. "io/ioutil"
  5. "log"
  6. )
  7. func main() {
  8. //get doc to sign
  9. doc, err := ioutil.ReadFile("myfile.txt")
  10. if err != nil {
  11. log.Printf("error: %s", err)
  12. }
  13. //your pkcs12 certificate
  14. p12, err := ioutil.ReadFile("testCert.p12")
  15. if err != nil {
  16. log.Printf("error: %s", err)
  17. }
  18. //your certificate authority cert
  19. caCert, err := ioutil.ReadFile("ca.cer")
  20. if err != nil {
  21. log.Printf("error: %s", err)
  22. }
  23. //your cert password. Store somewhere safe, not in code.
  24. p12pass := "yourCertPassword"
  25. //create the signature
  26. signature, err := s.SignWithP12(doc, p12, p12pass, caCert)
  27. if err != nil {
  28. log.Printf("error: %s", err)
  29. }
  30. //write out to disk
  31. ioutil.WriteFile("Signature", signature, 0644)
  32. if err != nil {
  33. log.Printf("error: %s", err)
  34. }
  35. }