--- loncom/lonnet/perl/lonnet.pm 2004/03/19 16:45:25 1.479 +++ loncom/lonnet/perl/lonnet.pm 2004/03/30 20:46:24 1.480 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.479 2004/03/19 16:45:25 albertel Exp $ +# $Id: lonnet.pm,v 1.480 2004/03/30 20:46:24 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4460,15 +4460,37 @@ sub latest_receipt_algorithm_id { return 'receipt2'; } +sub recunique { + my $fucourseid=shift; + my $unique; + if ($ENV{"course.$fucourseid.receiptalg"} eq 'receipt2') { + $unique=$ENV{"course.$fucourseid.internal.encseed"}; + } else { + $unique=$perlvar{'lonReceipt'}; + } + return unpack("%32C*",$unique); +} + +sub recprefix { + my $fucourseid=shift; + my $prefix; + if ($ENV{"course.$fucourseid.receiptalg"} eq 'receipt2') { + $prefix=$ENV{"course.$fucourseid.internal.encpref"}; + } else { + $prefix=$perlvar{'lonHostID'}; + } + return unpack("%32C*",$prefix); +} + sub ireceipt { my ($funame,$fudom,$fucourseid,$fusymb,$part)=@_; my $cuname=unpack("%32C*",$funame); my $cudom=unpack("%32C*",$fudom); my $cucourseid=unpack("%32C*",$fucourseid); my $cusymb=unpack("%32C*",$fusymb); - my $cunique=unpack("%32C*",$perlvar{'lonReceipt'}); + my $cunique=&recunique($fucourseid); my $cpart=unpack("%32S*",$part); - my $return =unpack("%32C*",$perlvar{'lonHostID'}).'-'; + my $return =&recprefix($fucourseid).'-'; if ($ENV{"course.$fucourseid.receiptalg"} eq 'receipt2' || $ENV{'request.state'} eq 'construct') { &Apache::lonxml::debug("doing receipt2 using parts $cpart, uname $cuname and udom $cudom gets ".($cpart%$cuname).