summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h')
-rw-r--r--usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h b/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h
new file mode 100644
index 0000000000..1705a266ff
--- /dev/null
+++ b/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h
@@ -0,0 +1,135 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ */
+
+/**
+ * @file KMSAgentStringUtilities.h
+ */
+
+#ifndef KMSAgentStringUtilities_h
+#define KMSAgentStringUtilities_h
+
+#ifdef WIN32
+#pragma warning(disable: 4786)
+#endif
+
+#include <stdio.h>
+
+#include "SYSCommon.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Functions for conversions between integers and strings.
+//
+
+/*---------------------------------------------------------------------------*/
+/**
+ * Converts a UTF8 string to an int64.
+ *
+ * @param i_sNumber: A string representation of the number to convert.
+ * @return The integer the input string represented.
+ */
+/*---------------------------------------------------------------------------*/
+ int64 UTF8ToInt64( const char* i_sNumber );
+
+/**
+ * Formats an int64 into a UTF8 string.
+ *
+ * A note on padding: If i_bPad is true, the string will be padded to the
+ * maximum size necessary to hold a an int64 representation. For decimal this
+ * is 19, for hex it is 16.
+ *
+ * @param i_iNumber The number to format.
+ * @param i_bPad If true, the string will be padded with zeroes. (See note above.)
+ * @param i_bHex Indicates whether the string format should be a hexadecimal
+ * representation of the integer (true) or a decimal representation (false).
+ * @param o_psUTF8 the string representation of the integer
+ *
+ * @return void
+ */
+void Int64ToUTF8(char* const o_psUTF8,
+ int64 i_iNumber,
+ int i_bPad,
+ int i_bHex );
+
+//
+// Functions for converting between binary buffer and hex string
+//
+
+/*--------------------------------------------------------------------------*/
+/**
+ * Converts a UTF8 hex string to its binary representation.
+ *
+ * If o_pBinaryBuffer is null, the function will return the required size.
+ * (The required size is always strlen(i_sHexString)/2.)
+ *
+ * @param i_sHexString: The hex string to convert.
+ * @param o_pBinaryBuffer: The buffer in which to put the binary
+ * representation of the hex string. If this is null, the function
+ * returns the required size.
+ * If this is not null, it must be large enough to hold binary conversion.
+ *
+ * @return The number of bytes put into o_pBinaryBuffer (or the number of bytes
+ * required, if o_pBinaryBuffer was null).
+ */
+/*---------------------------------------------------------------------------*/
+int ConvertUTF8HexStringToBinary(
+ const char* i_sHexString,
+ unsigned char* o_pBinaryBuffer);
+
+/**
+ * Converts a binary buffer to its UTF8 hex string representation.
+ *
+ * @param i_pBinaryBuffer: The binary buffer to convert.
+ * @param i_iBinaryBufferSize: The size of i_pBinaryBuffer;
+ * @param o_sHexString The hex string representation of the
+ * binary buffer which should be at least
+ * (i_iBinaryBufferSize * 2) + 1 characters long
+ */
+void ConvertBinaryToUTF8HexString(
+ char* const o_sHexString,
+ const unsigned char* const i_pBinaryBuffer,
+ int i_iBinaryBufferSize );
+
+//
+// Functions for date strings
+//
+
+/**
+ * populates o_psDateTimeISO8601UTC with a null terminated ISO 8601
+ * formatted timestamp string from the current UTC time of the
+ * system. The timestamp length will be restricted to i_iLength-1
+ * characters.
+ */
+void GetCurrentDateTimeISO8601UTC(char* const o_psDateTimeISO8601UTC,
+ int i_iLength);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //KMSAgentStringUtilities_h