Skip to content

Instantly share code, notes, and snippets.

@worace
Created June 9, 2016 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save worace/1966007908190ec6076c0facaf211538 to your computer and use it in GitHub Desktop.
Save worace/1966007908190ec6076c0facaf211538 to your computer and use it in GitHub Desktop.
sample_data = {:private_der => "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmhlYyYt6wttT+ZO6SeV8nHmf3OTWdSYuO92DHDiIEHSqVwDRKEQ15XVQVvolyR7Y5NnrQWBUT6S7wsTQxMET1hXiUB3ioTdfU701Adad6WE2udM1BexGhcteP167P1K3t9uDz7iXF6Smc8YA8O3rvpMye8MgeefRGO4GT7Mf3stxG5H+LWmy2CI+cKHxMGK8vPX93MZ0Fnx28n6kGtS4dw+imZyU3kEqqMA5bWWWoZEW1r8k/xuvyGrhiaALftvH8LpPpnutrBPLwVE5oaggejjFC5PrM2oNbwcYs9HLvQFU/tUkLeIm2k3CMIGdjNRKaOgw9jy9Fy1JQQgdbDOh3AgMBAAECggEAB2H2SVaTy97XM44S+6Bw5QGWl2HMbDQ6ATUbb8fDH06RuEDksJHv+Hz4QNyJKG1geUneiQUWriLM53PbvgCHViE8NsfcBA4rbu/LC3wL2EM48m6QOQJ1RiSaxPBJekJSEbY7w+S/fPY415HnXwQ+D4jNX5CKNruuZjy2InJBbUxI3rzMGFOFkIANp+0MoID3p1naTT/VAsBRpQxH//CrprJqcwU8Nq1UE5UpHY7alCSteDpOZ3OeE8zQ68tXhP3X8Zd2Se25YtTOfeVXq64NnnIz3V7CsCxIlkA9rRhe44rAG+mhqAcvDESetgWvcODjxp6tGWBElQVec8+jzKF65QKBgQDYhxUEHCkgOgYV4CN7jiO0WB+zwURIWdFiZSRn2WqsCJNzkAfwjZaMNEawvCt3ZI8wobFL+mXa8E7meg2csRkTkEgbqaysFKi6CV9A0rGK+tcPPPCh+uimTob9IHU9iH/dyz4k/nMOmKMqJHtPlutCIv25vsu5Q9X6FT5f1QUd7QKBgQDE4be1InvN6gwQzHpQpuh/ot4JHQvs9bKlxE1jyL5zgy/qdDEEH69m42juA0YPe3NQ0v1VEhkUOvGv7pXu2nwg/k0ggMsOKvMfxfmg/SP/zguaEKYOo20EQc06gNckfgARXdgkejPGf4xcjTt/c8xKL+pzLc2kJrQ8EFyL4KtzcwKBgASK+P7oFFjPvtbwp+3ssoUTID8mO+eEsubsllHzdtB7MZTIHdKHNfRlGGKW4BaWLobnrY+Zhk+MoSsmvmheMtd9PHYQHkZR/KRClBQJF56B2sdAERBk8kKi/SQMbUlINt6RaBFgoUtaGnpE361wzijKESa3gRC3AqNHlNJv5raVAoGAcsH+ip4m+8dIcSI+yXQAYSVVtoovwVcVYnohgeAo4ru82jQPvg+Z9aboKpPN6ohSlvHkqAl8hMY2yg2PZ0ICyFhyLFfmA8QVIpgLAUOMEDbRnGPH5xBrIugX79nZjXPEJltE+T4hn7oI3omT/J5KnZOAXNJ94wiMVdZTm1TBmvECgYEAl1ig2s+MXLZUPo78UEwyTh4U3x8Vuc1awFPtj80bObRSQLmsvtL3v/0YVhyBSCQKxPSBP5CdTD4HOTbddkc9SIjMMJje5fAQ9PHfIBi2z161LQerHj/uFha8Me9J94li2a5UUuu6aL4uD/9ca3IbDycTkBko7EOtcb42BswHneY=",
:public_der => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApoZWMmLesLbU/mTuknlfJx5n9zk1nUmLjvdgxw4iBB0qlcA0ShENeV1UFb6Jcke2OTZ60FgVE+ku8LE0MTBE9YV4lAd4qE3X1O9NQHWnelhNrnTNQXsRoXLXj9euz9St7fbg8+4lxekpnPGAPDt676TMnvDIHnn0RjuBk+zH97LcRuR/i1pstgiPnCh8TBivLz1/dzGdBZ8dvJ+pBrUuHcPopmclN5BKqjAOW1llqGRFta/JP8br8hq4YmgC37bx/C6T6Z7rawTy8FROaGoIHo4xQuT6zNqDW8HGLPRy70BVP7VJC3iJtpNwjCBnYzUSmjoMPY8vRctSUEIHWwzodwIDAQAB"}
require "openssl"
der_formatted_for_reading = "-----BEGIN RSA PRIVATE KEY-----\n" +
sample_data[:private_der].chars.each_slice(60).map(&:join).join("\n") +
"\n-----END RSA PRIVATE KEY-----"
private_key = OpenSSL::PKey::RSA.new(der_formatted_for_reading)
require "base64"
public_der = Base64.encode64(private_key.public_key.to_der)
formatted_public_der = public_der.gsub("\n", "")
formatted_public_der == sample_data[:public_der] # => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment