require 'openssl'

CERT = <<-EOF
-----BEGIN CERTIFICATE-----
MIICMTCCAZqgAwIBAgICKycwDQYJKoZIhvcNAQEFBQAwUTEPMA0GA1UECgwGbWhh
dWNrMT4wPAYDVQQDDDVtaGF1Y2sgUm9vdCBDQSAoZGY4MjcwMDQtNGM4NS00YzY0
LWFkZmUtMDE3M2U1ZmNmM2E5KTAeFw0xMzAxMDUwOTExNDhaFw0xODAxMDQwOTEx
NDhaMDIxDzANBgNVBAoMBm1oYXVjazEfMB0GA1UEAwwWbWhhdWNrIFByb2ZpbGUg
U2VydmljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAl3j4PELO4Vmyui1O
08+TuVBYxTySBs0HQSqjvPdkPt7AGl9ygZYo369Dy2NQlAdaRzaq37vj+FImqOXT
YLVddsB2OmgLIRFabs1tzq4oViTNE+zD2HIhrW4UA8joDQ7iYVe16LI85uJSiDtY
iW9zFCuepX0ium0WrHG51u6KPKMCAwEAAaM3MDUwDgYDVR0PAQH/BAQDAgeAMCMG
A1UdEQEB/wQZMBeCFW1oYXVja2Jvb2suYmlnZml4LmNvbTANBgkqhkiG9w0BAQUF
AAOBgQARrKv64jj/Fm8lYxYw+nOirmVqkuUogEpwoh/8073Gu3dnKAMmiepPH/Up
xRrSfWxSBBrjVkYjE2sN7rMXIu0jA4KI9HjfBKKgaUJq55jfpq3U06IX49Jq2K87
iP5tExoVCaGUj1c+HFz3kshg1ooUrioMblRQLdpApioNwJ+/BA==
-----END CERTIFICATE-----
EOF
KEY = <<-EOF
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCXePg8Qs7hWbK6LU7Tz5O5UFjFPJIGzQdBKqO892Q+3sAaX3KB
lijfr0PLY1CUB1pHNqrfu+P4Uiao5dNgtV12wHY6aAshEVpuzW3OrihWJM0T7MPY
ciGtbhQDyOgNDuJhV7Xosjzm4lKIO1iJb3MUK56lfSK6bRascbnW7oo8owIDAQAB
AoGATeQ6GprsUbvTiaOk5ozW1TO5AmwcV3z1XxBzNMgu95mKRcWRV4wFJsm03hEL
LaP+S6KUCgtPtrFgCfhtU0zQa2S3Ty/JXEjhhWTSR3MOm/myj2tyv4EeYLN7n69X
d7dzU/8/ffCSkt7LDdD2jAjtV9t2XkTo8tKoviauVdsEfFkCQQDlZV3ZO97aYt2P
hGCAckElQVuLSysmPAw+mUWLkOhuDRan7JL2A1aPRz2gxgRgcuiU/h4BliTT2pkc
xgZSA+T1AkEAqQoaBpMv77dPE4MjQSoqyCZucl01mpwfWC1xWdr9eGvE83E1tYlK
TqtU1+bDBG50KA/9kjzF4hIKHUqPQDxcNwJBAIKwWmQ9qLvwYVu3RidHcHfiIV5d
R8rzoOI0/hsCRnkUOdkXfa5svm7IXoLu7WVpcboYgE3VFUwhGOP8qXMmRtUCQDAe
kAoPHDZBGGGVkxOZzVPsnMQxhHDewI15YisSC9Wb2BT0xTVIP77lRuGu7xTz3F0L
MEPQyQPx3q836k9+30ECQHVWzS0aJIahjCu/1vTe/jRM0w3nOVQxoJORtVjmtWIA
y8V0f1zWQ3BX0IyRCZHtmbt+qbbM31aLMOwztU0VhlY=
-----END RSA PRIVATE KEY-----
EOF

cert = OpenSSL::X509::Certificate.new(CERT)
pkey = OpenSSL::PKey::RSA.new(KEY)
cert_chain = []
contents = 'Hello, World'
  
p7 = OpenSSL::PKCS7.sign( 
  cert, pkey, contents, cert_chain, OpenSSL::PKCS7::BINARY
)

File.open('signed.pem', 'w') {|f| f.write p7.to_pem }
File.open('signed.p7', 'w') {|f| f.write p7.to_der }

if p7.to_s =~ /\A.*\n.*NAQcB\n/
  puts "\nArgh!\n\n"
else
  puts "\nYes!\n\n"
end

puts %x[openssl pkcs7 -in signed.pem -inform pem]

