11 {1,1,1,224,224,224,256,256,256,384,384,384,512,512,512};
13 MODULE = Digest::SHA PACKAGE = Digest::SHA
46 shawrite(bitstr, bitcnt, s)
47 unsigned char * bitstr
55 Digest::SHA::sha1_hex = 1
56 Digest::SHA::sha1_base64 = 2
57 Digest::SHA::sha224 = 3
58 Digest::SHA::sha224_hex = 4
59 Digest::SHA::sha224_base64 = 5
60 Digest::SHA::sha256 = 6
61 Digest::SHA::sha256_hex = 7
62 Digest::SHA::sha256_base64 = 8
63 Digest::SHA::sha384 = 9
64 Digest::SHA::sha384_hex = 10
65 Digest::SHA::sha384_base64 = 11
66 Digest::SHA::sha512 = 12
67 Digest::SHA::sha512_hex = 13
68 Digest::SHA::sha512_base64 = 14
76 if ((state = shaopen(ix2alg[ix])) == NULL)
78 for (i = 0; i < items; i++) {
79 data = (unsigned char *) (SvPV(ST(i), len));
80 shawrite(data, len << 3, state);
85 result = (char *) shadigest(state);
86 len = shadsize(state);
89 result = shahex(state);
91 result = shabase64(state);
92 ST(0) = sv_2mortal(newSVpv(result, len));
99 Digest::SHA::hmac_sha1 = 0
100 Digest::SHA::hmac_sha1_hex = 1
101 Digest::SHA::hmac_sha1_base64 = 2
102 Digest::SHA::hmac_sha224 = 3
103 Digest::SHA::hmac_sha224_hex = 4
104 Digest::SHA::hmac_sha224_base64 = 5
105 Digest::SHA::hmac_sha256 = 6
106 Digest::SHA::hmac_sha256_hex = 7
107 Digest::SHA::hmac_sha256_base64 = 8
108 Digest::SHA::hmac_sha384 = 9
109 Digest::SHA::hmac_sha384_hex = 10
110 Digest::SHA::hmac_sha384_base64 = 11
111 Digest::SHA::hmac_sha512 = 12
112 Digest::SHA::hmac_sha512_hex = 13
113 Digest::SHA::hmac_sha512_base64 = 14
122 key = (unsigned char *) (SvPV(ST(items-1), len));
123 if ((state = hmacopen(ix2alg[ix], key, len)) == NULL)
125 for (i = 0; i < items - 1; i++) {
126 data = (unsigned char *) (SvPV(ST(i), len));
127 hmacwrite(data, len << 3, state);
132 result = (char *) hmacdigest(state);
133 len = shadsize(state->osha);
135 else if (ix % 3 == 1)
136 result = hmachex(state);
138 result = hmacbase64(state);
139 ST(0) = sv_2mortal(newSVpv(result, len));
147 Digest::SHA::hashsize = 0
148 Digest::SHA::algorithm = 1
153 state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
154 result = shadsize(state) << 3;
155 if (ix == 1 && result == 160)
157 ST(0) = sv_2mortal(newSViv(result));
169 state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
170 for (i = 1; i < items; i++) {
171 data = (unsigned char *) (SvPV(ST(i), len));
172 shawrite(data, len << 3, state);
180 Digest::SHA::digest = 0
181 Digest::SHA::Hexdigest = 1
182 Digest::SHA::B64digest = 2
188 state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
192 result = (char *) shadigest(state);
193 len = shadsize(state);
196 result = shahex(state);
198 result = shabase64(state);
199 ST(0) = sv_2mortal(newSVpv(result, len));