class Gem::Security::TrustDir
Die TrustDir verwaltet die vertrauenswürdigen Zertifikate für die Überprüfung von Gem-Signaturen.
Constants
- DEFAULT_PERMISSIONS
-
Standardberechtigungen für das Vertrauensverzeichnis und dessen Inhalt
Attribute
Das Verzeichnis, in dem vertrauenswürdige Zertifikate gespeichert werden.
Öffentliche Klassenmethoden
Source
# File lib/rubygems/security/trust_dir.rb, line 25 def initialize(dir, permissions = DEFAULT_PERMISSIONS) @dir = dir @permissions = permissions @digester = Gem::Security.create_digest end
Erstellt eine neue TrustDir unter Verwendung von dir, wobei die Verzeichnis- und Dateiberechtigungen gemäß permissions überprüft werden.
Öffentliche Instanzmethoden
Source
# File lib/rubygems/security/trust_dir.rb, line 35 def cert_path(certificate) name_path certificate.subject end
Gibt den Pfad zum vertrauenswürdigen certificate zurück.
Source
# File lib/rubygems/security/trust_dir.rb, line 42 def each_certificate return enum_for __method__ unless block_given? glob = File.join @dir, "*.pem" Dir[glob].each do |certificate_file| certificate = load_certificate certificate_file yield certificate, certificate_file rescue OpenSSL::X509::CertificateError next # HACK: warn end end
Enumeriert vertrauenswürdige Zertifikate.
Source
# File lib/rubygems/security/trust_dir.rb, line 60 def issuer_of(certificate) path = name_path certificate.issuer return unless File.exist? path load_certificate path end
Gibt das Ausstellerzertifikat des gegebenen certificate zurück, falls es im Vertrauensverzeichnis vorhanden ist.
Source
# File lib/rubygems/security/trust_dir.rb, line 80 def load_certificate(certificate_file) pem = File.read certificate_file OpenSSL::X509::Certificate.new pem end
Lädt die gegebene certificate_file.
Source
# File lib/rubygems/security/trust_dir.rb, line 71 def name_path(name) digest = @digester.hexdigest name.to_s File.join @dir, "cert-#{digest}.pem" end
Gibt den Pfad zum vertrauenswürdigen Zertifikat mit dem gegebenen ASN.1 name zurück.
Source
# File lib/rubygems/security/trust_dir.rb, line 89 def trust_cert(certificate) verify destination = cert_path certificate File.open destination, "wb", 0o600 do |io| io.write certificate.to_pem io.chmod(@permissions[:trusted_cert]) end end
Fügt ein Zertifikat zur Liste der vertrauenswürdigen Zertifikate hinzu.
Source
# File lib/rubygems/security/trust_dir.rb, line 105 def verify require "fileutils" if File.exist? @dir raise Gem::Security::Exception, "trust directory #{@dir} is not a directory" unless File.directory? @dir FileUtils.chmod 0o700, @dir else FileUtils.mkdir_p @dir, mode: @permissions[:trust_dir] end end
Stellt sicher, dass das Vertrauensverzeichnis existiert. Wenn es existiert, wird sichergestellt, dass es sich tatsächlich um ein Verzeichnis handelt. Andernfalls wird es mit den entsprechenden Berechtigungen erstellt.