From ec2795e3696852b2f949b28ee51e1e87f96f3660 Mon Sep 17 00:00:00 2001 From: PrasannaSRK07 <34109342+PrasannaSRK07@users.noreply.github.com> Date: Mon, 13 Jan 2020 18:59:58 +0530 Subject: [PATCH] dart signature example (#320) --- examples/signature.dart | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/signature.dart diff --git a/examples/signature.dart b/examples/signature.dart new file mode 100644 index 00000000..4477d910 --- /dev/null +++ b/examples/signature.dart @@ -0,0 +1,32 @@ +import 'dart:convert'; +import 'package:convert/convert.dart'; +import 'package:crypto/crypto.dart'; + +void main() { + var key = hex.decode("943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881"); + var salt = hex.decode("520f986b998545b4785e0defbc4f3c1203f22de2374a3d53cb7a7fe9fea309c5"); + var url = "http://img.example.com/pretty/image.jpg"; + var resizing_type = 'fill'; + var width = 300; + var height = 300; + var gravity = 'no'; + var enlarge = 1; + var extension = 'png'; + + var url_encoded = urlSafeBase64(utf8.encode(url)); + + var path = "/$resizing_type/$width/$height/$gravity/$enlarge/$url_encoded.$extension"; + + var signature = sign(salt, utf8.encode(path), key); + print("/$signature/$path"); +} + +String urlSafeBase64(buffer) { + return base64.encode(buffer).replaceAll("=", "").replaceAll("+", "-").replaceAll("/", "_"); +} + +String sign(salt, path, key) { + var hmac = Hmac(sha256, key); + var digest = hmac.convert(salt + path); + return urlSafeBase64(digest.bytes); +} \ No newline at end of file