]> git.mxchange.org Git - friendica-addons.git/blobdiff - twitter/vendor/abraham/twitteroauth/src/HmacSha1.php
Merge branch '3.6-rc'
[friendica-addons.git] / twitter / vendor / abraham / twitteroauth / src / HmacSha1.php
diff --git a/twitter/vendor/abraham/twitteroauth/src/HmacSha1.php b/twitter/vendor/abraham/twitteroauth/src/HmacSha1.php
new file mode 100644 (file)
index 0000000..d8cdab8
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * The MIT License
+ * Copyright (c) 2007 Andy Smith
+ */
+namespace Abraham\TwitterOAuth;
+
+/**
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * character (ASCII code 38) even if empty.
+ *   - Chapter 9.2 ("HMAC-SHA1")
+ */
+class HmacSha1 extends SignatureMethod
+{
+    /**
+     * {@inheritDoc}
+     */
+    public function getName()
+    {
+        return "HMAC-SHA1";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function buildSignature(Request $request, Consumer $consumer, Token $token = null)
+    {
+        $signatureBase = $request->getSignatureBaseString();
+
+        $parts = [$consumer->secret, null !== $token ? $token->secret : ""];
+
+        $parts = Util::urlencodeRfc3986($parts);
+        $key = implode('&', $parts);
+
+        return base64_encode(hash_hmac('sha1', $signatureBase, $key, true));
+    }
+}