Skip to content

Commit 57a8066

Browse files
lvkvcpu
authored andcommitted
Fix: Write CSR attributes as an implicit set
1 parent ad9b094 commit 57a8066

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

rcgen/src/certificate.rs

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -561,33 +561,39 @@ impl CertificateParams {
561561
serialize_public_key_der(subject_key, writer.next());
562562
// Write extensions
563563
// According to the spec in RFC 2986, even if attributes are empty we need the empty attribute tag
564-
writer.next().write_tagged(Tag::context(0), |writer| {
565-
if write_extension_request {
566-
writer.write_sequence(|writer| {
567-
let oid = ObjectIdentifier::from_slice(oid::PKCS_9_AT_EXTENSION_REQUEST);
568-
writer.next().write_oid(&oid);
569-
writer.next().write_set(|writer| {
564+
writer
565+
.next()
566+
.write_tagged_implicit(Tag::context(0), |writer| {
567+
// RFC 2986 specifies that attributes are a SET OF Attribute
568+
writer.write_set_of(|writer| {
569+
if write_extension_request {
570570
writer.next().write_sequence(|writer| {
571-
// Write key_usage
572-
self.write_key_usage(writer.next());
573-
// Write subject_alt_names
574-
self.write_subject_alt_names(writer.next());
575-
self.write_extended_key_usage(writer.next());
576-
577-
// Write custom extensions
578-
for ext in custom_extensions {
579-
write_x509_extension(
580-
writer.next(),
581-
&ext.oid,
582-
ext.critical,
583-
|writer| writer.write_der(ext.content()),
584-
);
585-
}
571+
let oid =
572+
ObjectIdentifier::from_slice(oid::PKCS_9_AT_EXTENSION_REQUEST);
573+
writer.next().write_oid(&oid);
574+
writer.next().write_set(|writer| {
575+
writer.next().write_sequence(|writer| {
576+
// Write key_usage
577+
self.write_key_usage(writer.next());
578+
// Write subject_alt_names
579+
self.write_subject_alt_names(writer.next());
580+
self.write_extended_key_usage(writer.next());
581+
582+
// Write custom extensions
583+
for ext in custom_extensions {
584+
write_x509_extension(
585+
writer.next(),
586+
&ext.oid,
587+
ext.critical,
588+
|writer| writer.write_der(ext.content()),
589+
);
590+
}
591+
});
592+
});
586593
});
587-
});
594+
}
588595
});
589-
}
590-
});
596+
});
591597

592598
Ok(())
593599
})?;

0 commit comments

Comments
 (0)