The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

RDF::Crypt::Signer - signs RDF graphs with RSA

DESCRIPTION

A Signer object is created using an RSA private key. The object can be used to sign multiple RDF graphs. The signature should be independent of the RDF serialisation used, so that Turtle and RDF/XML files containing equivalent triples should generate the same signature.

RDF::Crypt::Signer is a subclass of RDF::Crypt::Verifier, and can thus also be used to verify signatures using the private key of the signer. See RDF::Crypt::Verifier for details of the verification methods.

Constructors

new_from_file($file)

Given a filename containing a DER or PEM encoded RSA private key, constructs a Signer object.

new_from_string($str)

Given a string containing a DER or PEM encoded RSA private key, constructs a Signer object.

new_from_privkey($key)

Given a Crypt::OpenSSL::RSA private key object, constructs a Signer object.

Object Methods

sign_model($model)

Given an RDF::Trine::Model, returns a signature as a string.

The model is converted to a canonicalised N-Triples representation (see RDF::Trine::Serializer::NTriples::Canonical) with any triples that cannot be canonicalised being truncated. This representation is then signed using an MD5 digest, and the resulting binary signature encoded using base64.

generate_manifest($webid, \@urls)

Given a WebID that people can use to recover your public key, and a list of URLs that need signing, signs each and returns an RDF::Trine::Model containing the results of processing. This can be serialised as, say, Turtle to act as an endorsement for a bunch of RDF graphs.

sign_embed_turtle($turtle, $baseuri)

Parses the given Turtle into a model, generates a signature for that and then returns the original Turtle with the signature embedded as a comment. This allows the signature to sit in the same file as the data itself.

The base URI is used to resolve any relative URI references. Note that if a different base URI is provided when verifying the signature, this may cause verification to fail. The base URI is optional.

sign_embed_rdfxml($xml, $baseuri)

As per sign_embed_turtle, but RDF/XML.

sign_embed_rdfa($html, $baseuri, \%config)

Similar to sign_embed_turtle and sign_embed_rdfxml. The base URI is required. A set of configuration options may be provided, which will be passed along to RDF::RDFa::Parser's constructor.

Rather than storing the signature as an XML/HTML comment, the signature is stored on the root element as an attribute.

sign_text($str)

Bonus method - signs a literal string which may or may not have anything to do with RDF.

SEE ALSO

RDF::Crypt::Verifier.

BUGS

Please report any bugs to http://rt.cpan.org/.

AUTHOR

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT

Copyright 2010 Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.