diff options
author | Bart de Water <bartdewater@gmail.com> | 2020-04-19 17:00:01 -0400 |
---|---|---|
committer | Bart de Water <bartdewater@gmail.com> | 2020-04-19 17:21:16 -0400 |
commit | c4374ff041440fd07d884711ab9d743baae8ebde (patch) | |
tree | 8469016ca97290197af6509744abf3924848007d /lib/openssl | |
parent | 1f1641d71f8f84eeb410a8c8c1b5010ab5c49dd6 (diff) | |
download | ruby-openssl-c4374ff041440fd07d884711ab9d743baae8ebde.tar.gz |
Add Marshal support to PKey objects
Diffstat (limited to 'lib/openssl')
-rw-r--r-- | lib/openssl/marshal.rb | 30 | ||||
-rw-r--r-- | lib/openssl/pkey.rb | 17 | ||||
-rw-r--r-- | lib/openssl/x509.rb | 30 |
3 files changed, 55 insertions, 22 deletions
diff --git a/lib/openssl/marshal.rb b/lib/openssl/marshal.rb new file mode 100644 index 00000000..af564719 --- /dev/null +++ b/lib/openssl/marshal.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true +#-- +# = Ruby-space definitions to add DER (de)serialization to classes +# +# = Info +# 'OpenSSL for Ruby 2' project +# Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz> +# All rights reserved. +# +# = Licence +# This program is licensed under the same licence as Ruby. +# (See the file 'LICENCE'.) +#++ +module OpenSSL + module Marshal + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + def _load(string) + new(string) + end + end + + def _dump(_level) + to_der + end + end +end diff --git a/lib/openssl/pkey.rb b/lib/openssl/pkey.rb index ecb112f7..9cc32763 100644 --- a/lib/openssl/pkey.rb +++ b/lib/openssl/pkey.rb @@ -4,8 +4,21 @@ # Copyright (C) 2017 Ruby/OpenSSL Project Authors #++ +require_relative 'marshal' + module OpenSSL::PKey + class DH + include OpenSSL::Marshal + end + + class DSA + include OpenSSL::Marshal + end + if defined?(EC) + class EC + include OpenSSL::Marshal + end class EC::Point # :call-seq: # point.to_bn([conversion_form]) -> OpenSSL::BN @@ -22,4 +35,8 @@ module OpenSSL::PKey end end end + + class RSA + include OpenSSL::Marshal + end end diff --git a/lib/openssl/x509.rb b/lib/openssl/x509.rb index 1d2a5aac..6771b90c 100644 --- a/lib/openssl/x509.rb +++ b/lib/openssl/x509.rb @@ -12,24 +12,10 @@ # (See the file 'LICENCE'.) #++ +require_relative 'marshal' + module OpenSSL module X509 - module Marshal - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods - def _load(string) - new(string) - end - end - - def _dump(_level) - to_der - end - end - class ExtensionFactory def create_extension(*arg) if arg.size > 1 @@ -57,7 +43,7 @@ module OpenSSL end class Extension - include Marshal + include OpenSSL::Marshal def ==(other) return false unless Extension === other @@ -216,7 +202,7 @@ module OpenSSL end class Name - include Marshal + include OpenSSL::Marshal module RFC2253DN Special = ',=+<>#;' @@ -321,7 +307,7 @@ module OpenSSL end class Attribute - include Marshal + include OpenSSL::Marshal def ==(other) return false unless Attribute === other @@ -336,7 +322,7 @@ module OpenSSL end class Certificate - include Marshal + include OpenSSL::Marshal include Extension::SubjectKeyIdentifier include Extension::AuthorityKeyIdentifier include Extension::CRLDistributionPoints @@ -355,7 +341,7 @@ module OpenSSL end class CRL - include Marshal + include OpenSSL::Marshal include Extension::AuthorityKeyIdentifier def ==(other) @@ -372,7 +358,7 @@ module OpenSSL end class Request - include Marshal + include OpenSSL::Marshal def ==(other) return false unless Request === other |