Skip to content
Snippets Groups Projects
Select Git revision
21 results Searching

dsa-sign.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    • Niels Möller's avatar
      c5c15385
      * Reordered includes in most or all .c-files. All should now include · c5c15385
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
      c5c15385
      History
      * Reordered includes in most or all .c-files. All should now include
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
    Sgml.pmod 3.87 KiB
    string *from=({" ","&","<",">"});
    string *to=({"","&","<",">"});
    
    string unquote(string x) { return replace(x,from,to); }
    string quote(string x) { return replace(x,to,from); }
    
    class Tag
    {
      string tag;
      int pos;
      mapping(string:mixed) params=([]);
    //  array(Tag) data;
      array(object) data;
      string file;
    
      string location()
      {
        return "pos "+pos+" in file "+file;
      }
    
      void create(string t, void|mapping p, void|int po, 
    	      void|array(object|string) d, void|string f)
      {
        tag=t;
        pos=po;
        params=p||([]);
        data=d;
        file=f;
      }
    };
    
    #define TAG object(Tag)|string
    #define SGML array(TAG)
    
    SGML lex(string data, string file)
    {
      mixed foo=data/"<";
      SGML ret=({ unquote(foo[0]) });
      int pos=strlen(foo[0]);
      for(int e=1;e<sizeof(foo);e++)
      {
        string tag;
        string s=foo[e];
        pos++;
    
        if(s[0..2]=="!--")
        {
          pos+=strlen(foo[e]);
          while(sscanf(s,"%*s-->%s",s)!=2)
          {
    	e++;
    	s+="<"+foo[e];
    	pos+=strlen(foo[e])+1;
          }
          ret[-1]+=unquote(s);
          continue;
        }
        
        if(sscanf(s,"%[^ \t\n\r>]%s",tag,s)!=2)
          werror(sprintf("Missing end > (around pos %d in %s)\n",pos,file));
    
        tag=lower_case(tag);
        mapping params=([]);
    
        while(1)
        {
          sscanf(s,"%*[ \t\r\n]%s",s);
          if(!strlen(s))
          {
    	write(sprintf("Missing end > (around pos %d in %s)\n",pos,file));
    	break;
          }
          if(s[0]=='>')
          {
    	s=s[1..];
    	break;
          }
    
          if(sscanf(s,"%[^ \t\r\n>=]%s",string key,s) && strlen(key))
          {
    	key=lower_case(key);
    	if(s[0]=='=')
    	{
    	  string val;
    	  switch(s[1])
    	  {
    	  case '\'':
    	    while(sscanf(s,"='%s'%s",val,s)!=2)
    	    {
    	      e++;
    	      s+="<"+foo[e];
    	      pos+=strlen(foo[e])+1;
    	    }
    	    break;
    	  case '\"':
    	    while(sscanf(s,"=\"%s\"%s",val,s)!=2)
    	    {
    	      e++;
    	      s+="<"+foo[e];
    	      pos+=strlen(foo[e])+1;
    	    }
    	    break;
    	  default:
    	    sscanf(s,"=%[^ \t\r\n>]%s",val,s);
    	    break;
    	  }
    	  if(!val)
    	  {
    	    werror("Missing end quote parameter\n"); 
    	  }
    	  params[key]=val;
    	}else{
    	  params[key]=1;
    	}
          }
        }
    
    //    werror("Fount tag "+tag+" at pos "+pos+".\n");
        ret+=({ Tag(tag,params,pos,0,file), unquote(s) });
        pos+=sizeof(foo[e]);
      }
    
      return ret;
    }
    
    
    SGML group(SGML data)
    {
      SGML ret=({});
      foreach(data,TAG foo)
      {
        if(objectp(foo))
        {
          if(strlen(foo->tag) && foo->tag[0]=='/')
          {
    	string tag=foo->tag[1..];
    	string t;
    	int d;
    	if (sscanf(tag,"%[^ \t\r\n>]%*s",t)==2) foo->tag=tag=t;
    	for(d=sizeof(ret)-1;d>=0;d--)
    	{
    	  if(objectp(ret[d]) && !ret[d]->data && ret[d]->tag==tag)
    	  {
    	    ret[d]->data=ret[d+1..];
    	    ret=ret[..d];
    	    break;
    	  }
    	}
    	if(d>=0) continue;
          }
        }
        ret+=({foo});
      }
      return ret;
    }
    
    
    
    string mktag(string tag, mapping params)
    {
      string ret="<"+tag;
      foreach(indices(params),string i)
      {
        ret+=" "+i;
    
        if(stringp(params[i]))ret+="="+params[i];
      }
      return ret+">";
    }
    
    string generate(SGML data, void|function mkt)
    {
      string ret="";
      if(!mkt)
      {
        mkt=mktag;
      }
      foreach(data, TAG foo)
        {
          if(stringp(foo))
          {
    	ret+=quote(foo);
          }else{
    	ret+=mkt(foo->tag,foo->params);
    	if(foo->data)
    	{
    	  ret+=generate(foo->data,mkt);
    	  ret+=mkt("/"+foo->tag,([]));
    	}
          }
        }
    
      return ret;
    }
    
    SGML copy(SGML data)
    {
      if(!data) return 0;
      SGML ret=({});
      foreach(data,TAG t)
        {
          if(stringp(t))
          {
    	ret+=({t});
          }else{
    	ret+=({Tag(t->tag,t->params+([]),t->pos,copy(t->data),t->file)});
          }
        }
      return ret;
    }
    
    string get_text(SGML data)
    {
      string ret="";
      foreach(data,TAG t)
        {
          if(stringp(t))
          {
    	ret+=t;
          }else{
    	ret+="<"+t->tag;
    	foreach(indices(t->params), string name)
    	  ret+=" "+name+"="+t->params[name];
    
    	ret+=">";
    	if(t->data)
    	{
    	  ret+=get_text(t->data);
    	  ret+="</"+t->tag+">";
    	}
          }
        }
      return ret;
    }
    
    
    #ifdef TEST
    int main()
    {
      write(sprintf("%O\n",group(lex(Stdio.read_file("tutorial.wmml")))));
    }
    #endif