# PrimaryKey.pm # - objectified GnuPG primary keys (can have subkeys) # # Copyright (C) 2000 Frank J. Tobin # # This module is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # $Id: PrimaryKey.pm,v 1.4 2001/09/14 12:34:36 ftobin Exp $ # package GnuPG::PrimaryKey; use Moo; use MooX::late; use MooX::HandlesVia; BEGIN { extends qw( GnuPG::Key ) } for my $list (qw(user_ids subkeys user_attributes)) { my $ref = $list . "_ref"; has $ref => ( handles_via => 'Array', is => 'rw', default => sub { [] }, handles => { "push_$list" => 'push', }, ); no strict 'refs'; *{$list} = sub { my $self = shift; return wantarray ? @{$self->$ref(@_)} : $self->$ref(@_); }; } has $_ => ( isa => 'Any', is => 'rw', clearer => 'clear_' . $_, ) for qw( local_id owner_trust ); sub compare { my ($self, $other, $deep) = @_; my @comparison_fields = qw ( owner_trust ); foreach my $field (@comparison_fields) { return 0 unless $self->$field eq $other->$field; } if (defined $deep && $deep) { my @lists = qw( user_ids subkeys user_attributes ); foreach my $list (@lists) { return 0 unless @{$self->$list} == @{$other->$list}; for ( my $i = 0; $i < scalar(@{$self->$list}); $i++ ) { return 0 unless $self->$list->[$i]->compare($other->$list->[$i], 1); } } } return $self->SUPER::compare($other, $deep); } 1; __END__ =head1 NAME GnuPG::PrimaryKey - GnuPG Primary Key Objects =head1 SYNOPSIS # assumes a GnuPG::Interface object in $gnupg my @keys = $gnupg->get_public_keys( 'ftobin' ); # or my @keys = $gnupg->get_secret_keys( 'ftobin' ); # now GnuPG::PrimaryKey objects are in @keys =head1 DESCRIPTION GnuPG::PrimaryKey objects are generally instantiated as GnuPG::PublicKey or GnuPG::SecretKey objects through various methods of GnuPG::Interface. They embody various aspects of a GnuPG primary key. This package inherits data members and object methods from GnuPG::Key, which is not described here, but rather in L. =head1 OBJECT DATA MEMBERS =over 4 =item user_ids A list of GnuPG::UserId objects associated with this key. =item user_attributes A list of GnuPG::UserAttribute objects associated with this key. =item subkeys A list of GnuPG::SubKey objects associated with this key. =item local_id WARNING: DO NOT USE. This used to mean GnuPG's local id for the key, but modern versions of GnuPG do not produce it. Expect this to be the empty string or undef. =item owner_trust The scalar value GnuPG reports as the ownertrust for this key. See GnuPG's DETAILS file for details. =back =head1 SEE ALSO L, L, L, =cut