U:RDoc::NormalClass[iI" SPKI:ETI"OpenSSL::Netscape::SPKI;TI" Object;To:RDoc::Markup::Document: @parts[o;;[o:RDoc::Markup::Paragraph;[I"NA Simple Public Key Infrastructure implementation (pronounced "spooky"). ;TI" The structure is defined as;To:RDoc::Markup::Verbatim;[I"*PublicKeyAndChallenge ::= SEQUENCE { ;TI"" spki SubjectPublicKeyInfo, ;TI" challenge IA5STRING ;TI"} ;TI" ;TI"0SignedPublicKeyAndChallenge ::= SEQUENCE { ;TI"4 publicKeyAndChallenge PublicKeyAndChallenge, ;TI"/ signatureAlgorithm AlgorithmIdentifier, ;TI" signature BIT STRING ;TI"} ;T: @format0o; ;[ I"Owhere the definitions of SubjectPublicKeyInfo and AlgorithmIdentifier can ;TI"Lbe found in RFC5280. SPKI is typically used in browsers for generating ;TI"Ka public/private key pair and a subsequent certificate request, using ;TI"the HTML element.;To:RDoc::Markup::BlankLineS:RDoc::Markup::Heading: leveli: textI" Examples;T@$S; ;i;I"Creating an SPKI;To; ;[ I"'key = OpenSSL::PKey::RSA.new 2048 ;TI"(spki = OpenSSL::Netscape::SPKI.new ;TI"(spki.challenge = "RandomChallenge" ;TI"&spki.public_key = key.public_key ;TI"1spki.sign(key, OpenSSL::Digest::SHA256.new) ;TI"J#send a request containing this to a server generating a certificate ;T; 0S; ;i;I"Verifying an SPKI request;To; ;[ I"request = #... ;TI"0spki = OpenSSL::Netscape::SPKI.new request ;TI")unless spki.verify(spki.public_key) ;TI" # signature is invalid ;TI" end ;TI" #proceed;T; 0: @fileI"ext/openssl/ossl_ns_spki.c;T:0@omit_headings_from_table_of_contents_below0;0;0[[[[[I" class;T[[: public[[I"new;TI"ext/openssl/ossl_ns_spki.c;T[:protected[[: private[[I" instance;T[[;[[I"challenge;T@G[I"challenge=;T@G[I"public_key;T@G[I"public_key=;T@G[I" sign;T@G[I" to_der;T@G[I" to_pem;T@G[I" to_s;T@G[I" to_text;T@G[I" verify;T@G[;[[;[[[U:RDoc::Context::Section[i0o;;[;0;0[@;I"OpenSSL::Netscape;TcRDoc::NormalModule