Type:
Class

A Simple Public Key Infrastructure implementation (pronounced “spookey”). The structure is defined as

1
2
3
4
5
6
7
8
9
10
PublicKeyAndChallenge ::= SEQUENCE {
  spki SubjectPublicKeyInfo,
  challenge IA5STRING
}
 
SignedPublicKeyAndChallenge ::= SEQUENCE {
  publicKeyAndChallenge PublicKeyAndChallenge,
  signatureAlgorithm AlgorithmIdentifier,
  signature BIT STRING
}

where the definitions of SubjectPublicKeyInfo and AlgorithmIdentifier can be found in RFC5280. SPKI is typically used in browsers for generating a public/private key pair and a subsequent certificate request, using the HTML <keygen> element.

Examples

Creating an SPKI

1
2
3
4
5
6
key = OpenSSL::PKey::RSA.new 2048
spki = OpenSSL::Netscape::SPKI.new
spki.challenge = "RandomChallenge"
spki.public_key = key.public_key
spki.sign(key, OpenSSL::Digest::SHA256.new)
#send a request containing this to a server generating a certificate

Verifiying an SPKI request

1
2
3
4
5
6
request = #...
spki = OpenSSL::Netscape::SPKI.new request
unless spki.verify(spki.public_key)
  # signature is invalid
end
#proceed
to_s
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

to_s() Instance Public methods Alias for:

2025-01-10 15:47:30
to_pem
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.to_pem => PEM-encoded string Instance Public methods Returns the PEM

2025-01-10 15:47:30
sign
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.sign(key, digest) => spki Instance Public methods Parameters

2025-01-10 15:47:30
challenge=
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.challenge = str => string Instance Public methods Parameters

2025-01-10 15:47:30
public_key
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.public_key => pkey Instance Public methods Returns the public key associated

2025-01-10 15:47:30
new
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

SPKI.new([request]) => spki Class Public methods Parameters

2025-01-10 15:47:30
to_text
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.to_text => string Instance Public methods Returns a textual representation

2025-01-10 15:47:30
to_der
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.to_der => DER-encoded string Instance Public methods Returns the DER

2025-01-10 15:47:30
public_key=
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.public_key = pub => pkey Instance Public methods Parameters

2025-01-10 15:47:30
challenge
  • References/Ruby on Rails/Ruby/Classes/OpenSSL/OpenSSL::Netscape/OpenSSL::Netscape::SPKI

spki.challenge => string Instance Public methods Returns the challenge string

2025-01-10 15:47:30