diff options
author | Damien Miller <djm@mindrot.org> | 2000-09-16 13:29:08 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2000-09-16 13:29:08 +1100 |
commit | e4340be5b3ff16f4d9ba5e3ea7e449dc1b6fa7a8 (patch) | |
tree | aba9e2ae234edeb888b922c6a13b755c1248deea /authfile.c | |
parent | f384c366d33cb435627743f7ea0ed3f966543d40 (diff) |
- (djm) Merge OpenBSD changes:
- markus@cvs.openbsd.org 2000/09/05 02:59:57
[session.c]
print hostname (not hushlogin)
- markus@cvs.openbsd.org 2000/09/05 13:18:48
[authfile.c ssh-add.c]
enable ssh-add -d for DSA keys
- markus@cvs.openbsd.org 2000/09/05 13:20:49
[sftp-server.c]
cleanup
- markus@cvs.openbsd.org 2000/09/06 03:46:41
[authfile.h]
prototype
- deraadt@cvs.openbsd.org 2000/09/07 14:27:56
[ALL]
cleanup copyright notices on all files. I have attempted to be
accurate with the details. everything is now under Tatu's licence
(which I copied from his readme), and/or the core-sdi bsd-ish thing
for deattack, or various openbsd developers under a 2-term bsd
licence. We're not changing any rules, just being accurate.
- markus@cvs.openbsd.org 2000/09/07 14:40:30
[channels.c channels.h clientloop.c serverloop.c ssh.c]
cleanup window and packet sizes for ssh2 flow control; ok niels
- markus@cvs.openbsd.org 2000/09/07 14:53:00
[scp.c]
typo
- markus@cvs.openbsd.org 2000/09/07 15:13:37
[auth-options.c auth-options.h auth-rh-rsa.c auth-rsa.c auth.c]
[authfile.h canohost.c channels.h compat.c hostfile.h log.c match.h]
[pty.c readconf.c]
some more Copyright fixes
- markus@cvs.openbsd.org 2000/09/08 03:02:51
[README.openssh2]
bye bye
- deraadt@cvs.openbsd.org 2000/09/11 18:38:33
[LICENCE cipher.c]
a few more comments about it being ARC4 not RC4
- markus@cvs.openbsd.org 2000/09/12 14:53:11
[log-client.c log-server.c log.c ssh.1 ssh.c ssh.h sshd.8 sshd.c]
multiple debug levels
- markus@cvs.openbsd.org 2000/09/14 14:25:15
[clientloop.c]
typo
- deraadt@cvs.openbsd.org 2000/09/15 01:13:51
[ssh-agent.c]
check return value for setenv(3) for failure, and deal appropriately
Diffstat (limited to 'authfile.c')
-rw-r--r-- | authfile.c | 92 |
1 files changed, 84 insertions, 8 deletions
diff --git a/authfile.c b/authfile.c index 4368cb941..0a5bae96f 100644 --- a/authfile.c +++ b/authfile.c | |||
@@ -1,21 +1,42 @@ | |||
1 | /* | 1 | /* |
2 | * | ||
3 | * authfile.c | ||
4 | * | ||
5 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 2 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
6 | * | ||
7 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 3 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
8 | * All rights reserved | 4 | * All rights reserved |
9 | * | ||
10 | * Created: Mon Mar 27 03:52:05 1995 ylo | ||
11 | * | ||
12 | * This file contains functions for reading and writing identity files, and | 5 | * This file contains functions for reading and writing identity files, and |
13 | * for reading the passphrase from the user. | 6 | * for reading the passphrase from the user. |
14 | * | 7 | * |
8 | * As far as I am concerned, the code I have written for this software | ||
9 | * can be used freely for any purpose. Any derived versions of this | ||
10 | * software must be clearly marked as such, and if the derived work is | ||
11 | * incompatible with the protocol description in the RFC file, it must be | ||
12 | * called by a name other than "ssh" or "Secure Shell". | ||
13 | * | ||
14 | * | ||
15 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | ||
16 | * | ||
17 | * Redistribution and use in source and binary forms, with or without | ||
18 | * modification, are permitted provided that the following conditions | ||
19 | * are met: | ||
20 | * 1. Redistributions of source code must retain the above copyright | ||
21 | * notice, this list of conditions and the following disclaimer. | ||
22 | * 2. Redistributions in binary form must reproduce the above copyright | ||
23 | * notice, this list of conditions and the following disclaimer in the | ||
24 | * documentation and/or other materials provided with the distribution. | ||
25 | * | ||
26 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
27 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
28 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
29 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
30 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
31 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
32 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
33 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
34 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
35 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
15 | */ | 36 | */ |
16 | 37 | ||
17 | #include "includes.h" | 38 | #include "includes.h" |
18 | RCSID("$OpenBSD: authfile.c,v 1.17 2000/06/20 01:39:38 markus Exp $"); | 39 | RCSID("$OpenBSD: authfile.c,v 1.19 2000/09/07 20:27:49 deraadt Exp $"); |
19 | 40 | ||
20 | #include <openssl/bn.h> | 41 | #include <openssl/bn.h> |
21 | #include <openssl/dsa.h> | 42 | #include <openssl/dsa.h> |
@@ -262,6 +283,7 @@ load_public_key_rsa(const char *filename, RSA * pub, char **comment_return) | |||
262 | return 1; | 283 | return 1; |
263 | } | 284 | } |
264 | 285 | ||
286 | /* load public key from private-key file */ | ||
265 | int | 287 | int |
266 | load_public_key(const char *filename, Key * key, char **comment_return) | 288 | load_public_key(const char *filename, Key * key, char **comment_return) |
267 | { | 289 | { |
@@ -497,3 +519,57 @@ load_private_key(const char *filename, const char *passphrase, Key *key, | |||
497 | close(fd); | 519 | close(fd); |
498 | return ret; | 520 | return ret; |
499 | } | 521 | } |
522 | |||
523 | int | ||
524 | do_load_public_key(const char *filename, Key *k, char **commentp) | ||
525 | { | ||
526 | FILE *f; | ||
527 | unsigned int bits; | ||
528 | char line[1024]; | ||
529 | char *cp; | ||
530 | |||
531 | f = fopen(filename, "r"); | ||
532 | if (f != NULL) { | ||
533 | while (fgets(line, sizeof(line), f)) { | ||
534 | line[sizeof(line)-1] = '\0'; | ||
535 | cp = line; | ||
536 | switch(*cp){ | ||
537 | case '#': | ||
538 | case '\n': | ||
539 | case '\0': | ||
540 | continue; | ||
541 | } | ||
542 | /* Skip leading whitespace. */ | ||
543 | for (; *cp && (*cp == ' ' || *cp == '\t'); cp++) | ||
544 | ; | ||
545 | if (*cp) { | ||
546 | bits = key_read(k, &cp); | ||
547 | if (bits != 0) { | ||
548 | if (commentp) | ||
549 | *commentp=xstrdup(filename); | ||
550 | fclose(f); | ||
551 | return 1; | ||
552 | } | ||
553 | } | ||
554 | } | ||
555 | fclose(f); | ||
556 | } | ||
557 | return 0; | ||
558 | } | ||
559 | |||
560 | /* load public key from pubkey file */ | ||
561 | int | ||
562 | try_load_public_key(const char *filename, Key *k, char **commentp) | ||
563 | { | ||
564 | char pub[MAXPATHLEN]; | ||
565 | |||
566 | if (do_load_public_key(filename, k, commentp) == 1) | ||
567 | return 1; | ||
568 | if (strlcpy(pub, filename, sizeof pub) >= MAXPATHLEN) | ||
569 | return 0; | ||
570 | if (strlcat(pub, ".pub", sizeof pub) >= MAXPATHLEN) | ||
571 | return 0; | ||
572 | if (do_load_public_key(pub, k, commentp) == 1) | ||
573 | return 1; | ||
574 | return 0; | ||
575 | } | ||