From b0da6f0f637aa8fe99cbea8a3079cc066ab74ada Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Mon, 28 Oct 2013 15:23:17 +0100
Subject: [PATCH] Allow serial number to be set explicitly.

---
 lib/modules/Standards.pmod/X509.pmod | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/modules/Standards.pmod/X509.pmod b/lib/modules/Standards.pmod/X509.pmod
index 37e35dbd8d..13637b8079 100644
--- a/lib/modules/Standards.pmod/X509.pmod
+++ b/lib/modules/Standards.pmod/X509.pmod
@@ -206,10 +206,10 @@ string dsa_sign_key(Sequence issuer, Crypto.DSA dsa,
 
 //!
 string make_selfsigned_dsa_certificate(Crypto.DSA dsa, int ttl, array name,
-				       array|void extensions)
+				       array|void extensions, void|int serial)
 {
-  int serial =
-    (int)Gmp.bignum(Standards.UUID.make_version1(-1)->encode(), 256);
+  if(!serial)
+    serial = (int)Gmp.mpz(Standards.UUID.make_version1(-1)->encode(), 256);
 
   Sequence dn = Certificate.build_distinguished_name(@name);
 
@@ -237,12 +237,15 @@ int(0..1) rsa_verify_digest(Crypto.RSA rsa, object digest_id,
 //!
 //! @param issuer
 //!   Distinguished name for the issuer.
+//!   See @[Standards.PKCS.Certificate.build_distinguished_name].
 //!
 //! @param rsa
 //!   RSA parameters for the issuer.
+//!   See @[Crypto.RSA].
 //!
 //! @param subject
 //!   Distinguished name for the issuer.
+//!   See @[Standards.PKCS.Certificate.build_distinguished_name].
 //!
 //! @param public_key
 //!   DER-encoded RSAPublicKey structure.
@@ -278,10 +281,10 @@ string rsa_sign_key(Sequence issuer, Crypto.RSA rsa,
 
 //!
 string make_selfsigned_rsa_certificate(Crypto.RSA rsa, int ttl, array name,
-				       array|void extensions)
+				       array|void extensions, void|int serial)
 {
-  int serial =
-    (int)Gmp.bignum(Standards.UUID.make_version1(-1)->encode(), 256);
+  if(!serial)
+    serial = (int)Gmp.mpz(Standards.UUID.make_version1(-1)->encode(), 256);
 
   Sequence dn = Certificate.build_distinguished_name(@name);
 
-- 
GitLab