From b652c9312830588ecf4a91279f9e4fbd3c8e2a18 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Tue, 22 Jul 2008 22:14:36 +0200
Subject: [PATCH] Added shortcut functions to convert OIDs between BER and
 dotted-decimal forms. Needed by the GSSAPI module.

Rev: lib/modules/Standards.pmod/ASN1.pmod/module.pmod:1.1
---
 .gitattributes                                |  1 +
 .../Standards.pmod/ASN1.pmod/module.pmod      | 28 +++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 lib/modules/Standards.pmod/ASN1.pmod/module.pmod

diff --git a/.gitattributes b/.gitattributes
index d35d9873c4..792446a59e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -233,6 +233,7 @@ testfont binary
 /lib/modules/Sql.pmod/tds.pike foreign_ident
 /lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod foreign_ident
 /lib/modules/Standards.pmod/ASN1.pmod/Types.pmod foreign_ident
+/lib/modules/Standards.pmod/ASN1.pmod/module.pmod foreign_ident
 /lib/modules/Standards.pmod/ASN1.pmod/testsuite.in foreign_ident
 /lib/modules/Standards.pmod/EXIF.pmod foreign_ident
 /lib/modules/Standards.pmod/FIPS10_4.pmod foreign_ident
diff --git a/lib/modules/Standards.pmod/ASN1.pmod/module.pmod b/lib/modules/Standards.pmod/ASN1.pmod/module.pmod
new file mode 100644
index 0000000000..a2b4361924
--- /dev/null
+++ b/lib/modules/Standards.pmod/ASN1.pmod/module.pmod
@@ -0,0 +1,28 @@
+// $Id: module.pmod,v 1.1 2008/07/22 20:14:36 mast Exp $
+
+string encode_der_oid (string dotted_decimal)
+//! Convenience function to convert an oid (object identifier) on
+//! dotted-decimal form (e.g. @expr{"1.3.6.1.4.1.1466.115.121.1.38"@})
+//! to its DER (and hence also BER) encoded form.
+//!
+//! @seealso
+//! @[decode_der_oid]
+{
+  // NB: No syntax checking at all..
+  .Types.Identifier id = .Types.Identifier();
+  id->id = (array(int)) (dotted_decimal / ".");
+  return id->der_encode();
+}
+
+string decode_der_oid (string der_oid)
+//! Convenience function to convert a DER/BER encoded oid (object
+//! identifier) to the human readable dotted-decimal form.
+//!
+//! @seealso
+//! @[encode_der_oid]
+{
+  // NB: No syntax checking at all..
+  .Types.Identifier id = .Types.Identifier();
+  id->decode_primitive (der_oid[2..]);
+  return (array(string)) id->id * ".";
+}
-- 
GitLab