Skip to content

Commit 78fc289

Browse files
authored
Merge pull request #206 from waterkip/GH-205-signing_key
Don't mention key usage unless we have both signing and encryption
2 parents 0f0f8f9 + 70adeb6 commit 78fc289

File tree

2 files changed

+8
-16
lines changed

2 files changed

+8
-16
lines changed

lib/Net/SAML2/SP.pm

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -292,15 +292,6 @@ around BUILDARGS => sub {
292292

293293
sub _build_id {
294294
my $self = shift;
295-
296-
# This allows current clients to override the builder without changing
297-
# their code
298-
if (my $f = $self->can('generate_sp_desciptor_id')) {
299-
Net::SAML2::Util::deprecation_warning
300-
"generate_sp_desciptor_id has been deprecated, please override " .
301-
"_build_id yourself or supply the ID to the constructor";
302-
return $f->();
303-
}
304295
return Net::SAML2::Util::generate_id();
305296
}
306297

@@ -615,9 +606,11 @@ sub generate_metadata {
615606
protocolSupportEnumeration => URN_PROTOCOL,
616607
},
617608

618-
$self->_generate_key_descriptors($x, 'signing'),
609+
$self->has_encryption_key
610+
? ($self->_generate_key_descriptors($x, 'encryption'),
611+
$self->_generate_key_descriptors($x, 'signing'))
612+
: $self->_generate_key_descriptors($x, 'both'),
619613

620-
$self->has_encryption_key ? $self->_generate_key_descriptors($x, 'encryption') : (),
621614

622615
$self->_generate_single_logout_service($x),
623616

@@ -659,11 +652,11 @@ sub _generate_key_descriptors {
659652
&& !$self->want_assertions_signed
660653
&& !$self->sign_metadata;
661654

662-
my $key = $use eq 'signing' ? $self->_cert_text : $self->_encryption_key_text;
655+
my $key = $use eq 'encryption' ? $self->_encryption_key_text : $self->_cert_text;
663656

664657
return $x->KeyDescriptor(
665658
$md,
666-
{ use => $use },
659+
$use ne 'both' ? { use => $use } : {},
667660
$x->KeyInfo(
668661
$ds,
669662
$x->X509Data($ds, $x->X509Certificate($ds, $key)),
@@ -681,7 +674,7 @@ Get the key name for either the C<signing> or C<encryption> key
681674
sub key_name {
682675
my $self = shift;
683676
my $use = shift;
684-
my $key = $use eq 'signing' ? $self->_cert_text : $self->_encryption_key_text;
677+
my $key = $use eq 'encryption' ? $self->_encryption_key_text : $self->_cert_text;
685678
return unless $key;
686679
return Digest::MD5::md5_hex($key);
687680
}

t/02-create-sp.t

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,7 @@ use URN::OASIS::SAML2 qw(:bindings :urn);
180180

181181
my $kd = get_single_node_ok($xpath, "$p/md:KeyDescriptor");
182182

183-
is($kd->getAttribute('use'),
184-
"signing", "Key descriptor is there for signing only");
183+
ok(!$kd->getAttribute('use'), "No key descriptor");
185184

186185
ok(
187186
!$kd->getAttribute('encryption'),

0 commit comments

Comments
 (0)