Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • 9.0
  • 8.0
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • nt-tools
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
  • v8.0.1982
  • v8.0.1980
  • v8.0.1978
  • v8.0.1976
  • v8.0.1974
  • v8.0.1972
  • v8.0.1970
  • v8.0.1968
  • v8.0.1966
  • v8.0.1964
  • v8.0.1962
  • v8.0.1960
40 results

TODO

Blame
    • Niels Möller's avatar
      33ef435c
      New SSL module · 33ef435c
      Niels Möller authored
      Rev: lib/modules/SSL.pmod/TODO:1.1
      Rev: lib/modules/SSL.pmod/alert.pike:1.1
      Rev: lib/modules/SSL.pmod/cipher.pike:1.1
      Rev: lib/modules/SSL.pmod/connection.pike:1.1
      Rev: lib/modules/SSL.pmod/constants.pike:1.1
      Rev: lib/modules/SSL.pmod/context.pike:1.1
      Rev: lib/modules/SSL.pmod/handshake.pike:1.1
      Rev: lib/modules/SSL.pmod/https.pike:1.1
      Rev: lib/modules/SSL.pmod/packet.pike:1.1
      Rev: lib/modules/SSL.pmod/queue.pike:1.1
      Rev: lib/modules/SSL.pmod/server.pike:1.1
      Rev: lib/modules/SSL.pmod/session.pike:1.1
      Rev: lib/modules/SSL.pmod/sslport.pike:1.1
      Rev: lib/modules/SSL.pmod/state.pike:1.1
      Rev: lib/modules/SSL.pmod/struct.pike:1.1
      33ef435c
      History
      New SSL module
      Niels Möller authored
      Rev: lib/modules/SSL.pmod/TODO:1.1
      Rev: lib/modules/SSL.pmod/alert.pike:1.1
      Rev: lib/modules/SSL.pmod/cipher.pike:1.1
      Rev: lib/modules/SSL.pmod/connection.pike:1.1
      Rev: lib/modules/SSL.pmod/constants.pike:1.1
      Rev: lib/modules/SSL.pmod/context.pike:1.1
      Rev: lib/modules/SSL.pmod/handshake.pike:1.1
      Rev: lib/modules/SSL.pmod/https.pike:1.1
      Rev: lib/modules/SSL.pmod/packet.pike:1.1
      Rev: lib/modules/SSL.pmod/queue.pike:1.1
      Rev: lib/modules/SSL.pmod/server.pike:1.1
      Rev: lib/modules/SSL.pmod/session.pike:1.1
      Rev: lib/modules/SSL.pmod/sslport.pike:1.1
      Rev: lib/modules/SSL.pmod/state.pike:1.1
      Rev: lib/modules/SSL.pmod/struct.pike:1.1
    pem.pmod NaN GiB
    /* pem.pmod
     *
     * Primitive PEM decoder. (Extracted from roxen/server/protocols/ssl3.pike).
     */
    
    object begin_pem = Regexp("-----BEGIN (.*)----- *$");
    object end_pem = Regexp("-----END (.*)----- *$");
    
    mapping(string:string) parse_pem(string f)
    {
    #ifdef PEM_DEBUG
      werror(sprintf("parse_pem: '%s'\n", f));
    #endif
    #if 0
    if(!f)
      {
        werror("PEM: No certificate found.\n");
        return 0;
      }
    #endif
      array(string) lines = f / "\n";
      string name = 0;
      int start_line;
      mapping(string:string) parts = ([ ]);
    
      for(int i = 0; i < sizeof(lines); i++)
      {
        array(string) res;
        if (res = begin_pem->split(lines[i]))
        {
    #ifdef PEM_DEBUG
          werror(sprintf("Matched start of '%s'\n", res[0]));
    #endif
          if (name) /* Bad syntax */
    	return 0;
          name = res[0];
          start_line = i + 1;
        }
        else if (res = end_pem->split(lines[i]))
        {
    #ifdef PEM_DEBUG
          werror(sprintf("Matched end of '%s'\n", res[0]));      
    #endif
          if (name != res[0]) /* Bad syntax */
    	return 0;
          parts[name] = MIME.decode_base64(lines[start_line .. i - 1] * "");
          name = 0;
        }
      }
      if (name) /* Bad syntax */
        return 0;
    #ifdef PEM_DEBUG
      werror(sprintf("pem contents: %O\n", parts));
    #endif
      return parts;
    }
    
    string build_pem(string tag, string data)
    {
      return sprintf("-----BEGIN %s-----\n\n"
    		 "%s\n"
    		 "-----END %s-----\n",
    		 tag, MIME.encode_base64(data), tag);
    }