Difference between revisions of "LlHMAC"

From Second Life Wiki
Jump to navigation Jump to search
(Initial stab at upcoming llHMAC function article)
 
(If the input changes, so does the output)
 
(5 intermediate revisions by 2 users not shown)
Line 9: Line 9:
|func_footnote=This function supports md5, sha1, sha224, sha256, sha384, sha512 for '''algorithm'''.
|func_footnote=This function supports md5, sha1, sha224, sha256, sha384, sha512 for '''algorithm'''.
|func_desc
|func_desc
|return_text=that is the HMAC hash of '''msg''' when using hash algorithm '''algorithm''' and secret key '''private_key'''.
|return_text=that is the {{Wikipedia|Base64|Base64-encoded}} {{Wikipedia|HMAC|HMAC}} hash of '''msg''' when using hash algorithm '''algorithm''' and secret key '''private_key'''.
|spec
|spec
|caveats
|caveats
|constants
|constants
|examples=<source lang="lsl2">default
|examples=<syntaxhighlight lang="lsl2">default
{
{
     state_entry()
     state_entry()
     {
     {
        // Key generated using LibreSSL 3.3.6.
         string private_key = "secret key";
        // Generated for demonstration purposes only ;)
         string private_key = "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqxXSIhFHzYO9UNEUvMMXwhB4vf32fPirCxxV/w4m88jKPmFH
QQe9DOwj7illmvg+81vzBNGt+uNYy/2zFegUtwvxKCEioeoanRpPcvn9r/d/kXad
WL/DyKJwHbF1EtTfPAZSl6ZIBIYis8HQ/RAln3olS705AmCKBRkbz3cZ+dTzqX1v
7ohqqPPoCaXQFgLTMYnqU8ZTsq1Sl8BwKK735HPmKLCEjZaMn97lvzGHufY/JdRs
dwdRHqKnpe2w2c0AzNpQtjoRCnPtj7cFgCeztjAcbdtuS8ipJTEIuBLWHCVVXIlD
DQ6jJvIEW7tt+6kde/NUskRASd7Rtoy5AeS7cwIDAQABAoIBABwvix/7stWj55Oh
7oWuqoJZTlsWtP4fxaYd8/kCLt6o7NDcG+4VxUqUuNKq1UdzsINNWbsohD46KE3r
LQ7l3kvN1twioV8Ff370b7RkhSvxXX3sib2uUiYCxO/PZZdFpMVx0TeUuHauVpdA
zhpzB4+/gtd4hCTlHLf8S/2hBJGJA9e37Vo3MqXh43QRFTD8pgjb0mUWa4xJeZlz
3vGmQl0uMS04wX+r7Pq1HKs7gk93WeLrNhEQgRwUPgumrMGHey9eF1kDb14m3O7Z
qWU7MWWME2lxcUV0YT/iHPfvStvLHiEdi1z2TGKkMmlHX7RGpk7Js5GGQfeEKEsv
ihXuFmkCgYEA2y6V2+HCmViA8V1qY907z5dvG3ar9zbm3qfcJDJFoNOzDZNU0NRJ
eZu/LhwTHW7PArAuWhxh7ENu9Bhl5FjvMuyqrMPud1Tf0GsrYKQJITgbW6IC6w/N
a+2ZMm6VDCztS5MNNmWRCTTEecd4lnPLfyX9XYfUvUovzv5mM65Hzl0CgYEAx9Ly
RR1tkjgiIJHmpv95MkaHg4O4NZT0eiyykRz1qENESZOtJ00l+/p4vZSOdQjwPl+q
vjMhlZc9a2292UEy3BsBOPB/nJybLXBDFa0KYUCc3/aHGSgq+ZbUKNhdBq2c83hb
Dpw2ajHluLtXO7D4kDGvEDLPN+/19NElI6EL9A8CgYAVRu5xS/cyH69UvvbG/wEB
Y/f7OIf1FbVPxAfQ07iCpkppdPX018bSMVZbyYnpf4pE/olhYgP3hYxN0diCVEfU
L7lZ0CNkHi8j8mNhnErumJ2/RXj3DK+qXIRUqvt5FRtsDLhpoW508FRqZfzEzjTh
APUZkUgLoBoIBBYzyiVaWQKBgD3GvHmbmHVc/0f8c0drsedWIK0K+tct3ssqqGXu
gw/rA+CPVDfTRQv6qntJwyTxh3xxDRNSMW7S2/0rZ0cUPgoIGz+kMn+TdvH8Q/Ee
lxfr5tPinm+rmGWjOKIMCe53nA81RUlmB/iaxn9vA5ADrUS+53Vlj+SmPe7a/dVf
A5gHAoGAbS4sMlUkUd449PT33rqx26aNKkKLI9PLxgWE7YBfwzaUkG0MBryQqP5L
aIY2a+8ZvUeHxmY0oQfPQkH5KKbAaC0ozaXf+3qX0Gfkt8vxsh41ON5esr0tfcm2
BFdQrdBOACefo2kOFfdMSP6KWKI3HZMJAr9SDcAiL23IQZ/wl/c=
-----END RSA PRIVATE KEY-----";
          
          
         // Supported algorithims for llHmac() include:
         // Supported algorithims for llHMAC() include:
         // md5, sha1, sha224, sha256, sha384, sha512
         // md5, sha1, sha224, sha256, sha384, sha512
          
          
Line 56: Line 28:
          
          
         // For the given private_key/msg/algorithm, expect the HMAC
         // For the given private_key/msg/algorithm, expect the HMAC
         // digest to be 'xK/3hcR1IVpVK9vftoztuVRGZFE='
         // digest to be 'ffCDntkagRO5mIEtd2tYzM2Bg8I='
         llSay(0, "HMAC digest of message '" + msg + "' using algorithm "
         llSay(0, "HMAC digest of message '" + msg + "' using algorithm "
             +  algorithm + " is " + digest);
             +  algorithm + " is " + digest);
     }
     }
}</source>
}</syntaxhighlight>
|helpers
|helpers
|also_functions=
|also_functions=

Latest revision as of 03:31, 7 May 2023

Summary

Function: string llHMAC( string private_key, string msg, string algorithm );

Returns a string that is the "Wikipedia logo"Base64-encoded "Wikipedia logo"HMAC hash of msg when using hash algorithm algorithm and secret key private_key.

• string private_key
• string msg
• string algorithm

This function supports md5, sha1, sha224, sha256, sha384, sha512 for algorithm.

Examples

default
{
    state_entry()
    {
        string private_key = "secret key";
        
        // Supported algorithims for llHMAC() include:
        // md5, sha1, sha224, sha256, sha384, sha512
        
        string algorithm = "sha1";
        string msg = "Hello, Avatar!";
        
        string digest = llHMAC(private_key, msg, algorithm);
        
        // For the given private_key/msg/algorithm, expect the HMAC
        // digest to be 'ffCDntkagRO5mIEtd2tYzM2Bg8I='
        llSay(0, "HMAC digest of message '" + msg + "' using algorithm "
            +  algorithm + " is " + digest);
    }
}

See Also

Functions

•  llSignRSA
•  llVerifyRSA
•  llSHA1String
•  llSHA256String
•  llMD5String

Deep Notes

Search JIRA for related Issues

Signature

function string llHMAC( string private_key, string msg, string algorithm );