Project

General

Profile

Actions

Bug #10581

closed

OpenSSL::ASN1 fails to decode DKIM public keys

Added by postmodern (Hal Brodigan) over 9 years ago. Updated almost 8 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
[ruby-core:66750]

Description

Recently I needed to decode a DKIM public key. I found that OpenSSL::ASN1 failed to decode the key, while Krypt::ASN1 succeeded.

Steps to reproduce:

require 'openssl'
OpenSSL::ASN1.decode("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfmJiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB")

Expected Result: OpenSSL::ASN1Data

Actual Result: OpenSSL::ASN1::ASN1Error: Type mismatch. Total bytes read: 75 Bytes available: 216 Offset: 75

Additional Information:

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
OpenSSL 1.0.1e-fips 11 Feb 2013

Can also reproduce on ruby 2.1.5.

Actions #1

Updated by zzak (zzak _) over 8 years ago

  • Assignee set to 7150

Updated by rhenium (Kazuki Yamaguchi) almost 8 years ago

  • Status changed from Open to Rejected

Because the Base64 encoded string is invalid as DER format. You have to decode Base64 first.

require "openssl"
require "pp"

der = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfmJiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB".unpack("m")[0]
pp OpenSSL::ASN1.decode(der)
Actions

Also available in: Atom PDF

Like0
Like0Like0